Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Changer format cellule_VBA

hbb

XLDnaute Occasionnel
Bonjour à tous,
J'ai une feuille sur laquelle j'importe des données.
==> Les nombres de sont pas reconnus (format texte probablement) alors que le format renseigné pour les cellules est bien "standard"
On voit bien le triangle vert dans le coin de chaque cellule.

Pour que les valeurs soient reconnues (dans une fonction somme par exemple), je peux soit :
- activer chaque cellule et faire uniquement "entrée" mais ça va me prendre 3 heures tous les jours...
- intégrer un changement de format dans mon code VBA
J'ai essayé avec Selection.NumberFormat = "0" mais ça ne fonctionne pas.

Quelqu'un aurait une idée ?
merci d'avance,


 

wDog66

XLDnaute Occasionnel
Bonjour hbb

Si les nombres ne dépassent pas 999€ sinon il faut supprimer l'espace des milliers

Il "suffit" de mettre la valeur 1 dans une cellule, de la copier
De sélectionner toutes les cellules souhaitées et de faire un
Collage spécial -> Valeurs par mutiplication

A+
 

Phébus

XLDnaute Nouveau
Bonjour hbb

voici un code à essayer :

Sub Test()
For i = 1 To 10
Range("F" & i) = CDbl(Range("F" & i))
Next i
End Sub

à adapter tes colonnes et tes lignes.

Sinon tu ajoutes directement la fonction CDbl() lors de l'importation de données. Tu régleras le problème à la source.
 

hbb

XLDnaute Occasionnel
Bonsoir,
merci beaucoup à tous pour vos conseils.
J'avoue ne pas avoir réussi en suivant ces méthodes...
Avec 300 lignes et 50 colonnes, j'ai essayé de faire tourner une boucle i pour les lignes (suivant proposition de Phébus)
Par contre, pour enchainer d'une colonne à la suivante, je suis bloqué (la variante j = 1 to 50 ne fonctionne pas pour des colonnes A-B-C etc....

Au cas où... merci
Bonne soirée
 

Phébus

XLDnaute Nouveau
Re

Voici le code à adapter à tes colonnes et à tes lignes :

Sub Test()
For i = 1 To 500
For j = 1 To 50
Cells(i, j) = CDbl(Cells(i, j))
Next j
Next i
End Sub
 

TooFatBoy

XLDnaute Barbatruc
Puisque ".Value=--.Value" ne fonctionne pas, voici une autre proposition :
VB:
Sub test()
    For Each Cellule In Range("A1:D10")     ' Mettre l'adresse de la plage désirée
        If Cellule.Value <> "" Then Cellule.Value = --Cellule.Value
    Next
End Sub
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…