web-dev-qa-db-fra.com

Comment modifier le format d'une cellule en texte à l'aide de VBA

J'ai une colonne "durée" dans une feuille Excel. Son format de cellule change toujours - je souhaite convertir la durée de quelques minutes en secondes, mais en raison du formatage de la cellule, il me donne toujours des réponses différentes.

Je pensais qu'avant de faire la conversion, je pouvais convertir ce format de cellule en texte afin qu'il le considère comme une valeur de texte et non pour essayer de le formater automatiquement.

Actuellement, je copie toutes les données dans le Bloc-notes, puis je les enregistre sur la feuille Excel pour supprimer tout le format précédent. Existe-t-il un moyen d'automatiser la définition du formatage d'une cellule en texte à l'aide de VBA?

51
Code Hungry

Pour répondre à votre question directe, c'est:

Range("A1").NumberFormat = "@"

Ou

Cells(1,1).NumberFormat = "@"

Cependant, je vous suggère de modifier le format en fonction de ce que vous voulez réellement afficher. Cela vous permet de conserver le type de données dans la cellule et d'utiliser facilement les formules de cellule pour manipuler les données.

89
Justin Self

Cela devrait changer votre format en texte.

Worksheets("Sheetname").Activate
Worksheets("SheetName").Columns(1).Select 'or Worksheets("SheetName").Range("A:A").Select
Selection.NumberFormat = "@"
6
Jon

Un point: vous devez définir la propriété NumberFormat AVANT de charger la valeur dans la cellule. J'avais un numéro à neuf chiffres qui affichait toujours 9.14E + 08 lorsque NumberFormat était défini après le chargement de la cellule. Définir la propriété avant de charger la valeur a fait apparaître le nombre comme je le voulais, en texte simple

OU:

Pourriez-vous essayer un ajustement automatique d'abord.
Excel_Obj.Columns ("A: V"). EntireColumn.AutoFit

5
Dan McSweeney