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

Convertir les nombres stockés en tant que texte en nombres

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

arnaudbu

XLDnaute Occasionnel
Bonjour,

J'exporte depuis le logiciel SAP des données directement sous forme de feuille excel.

Par contre dans toutes les cellules possedant des nombres j'ai une erreur (coin vert): "le nombre dans cette cellule est au format texte ou précédé d'une apostrophe"

Ceci bloque mes formules car elle ne lise pas le nombre. Connaissez vous ce problème ? Comment à l'aide du macro, traiter l'ensemble des colonnes A, B, C et G ?

Merci à vous
 
Re : Convertir les nombres stockés en tant que texte en nombres

Bonsoir arnaudbu,

Sans plus.....

Essaie de saisir dans une cellule vide 1

Ensuite tu copies cette cellule par clic droit et Copier, tu selectionnes ta plage et par clic droit encore Collage spécial et tu coches multiplication.

Bonne soirée.

Jean-Pierre
 
Re : Convertir les nombres stockés en tant que texte en nombres

Bonjour le fil, le forum,

Cette macro converti les constantes textes en nombres (quand elles peuvent l'être) dans toutes les feuilles de tous les classeurs :

Code:
Sub ConversionTexte()
Dim wb As Workbook, ws As Worksheet, a As Range
On Error Resume Next
For Each wb In Workbooks
  For Each ws In wb.Worksheets
    [COLOR="Red"]For Each a In ws.Cells.SpecialCells(xlCellTypeConstants).Areas[/COLOR]
      a.Value = a.Value
    Next
  Next
Next
End Sub

Et si l'on veut se limiter aux colonnes A B C G (pour accélérer la macro) :

Code:
For Each a In ws.[COLOR="red"]Range("A:C,G:G")[/COLOR].SpecialCells(xlCellTypeConstants).Areas

A+
 
Dernière édition:
Re : Convertir les nombres stockés en tant que texte en nombres

Bonsoir,

sur plusieurs onglets, cela reste possible, bien au contraire, cependant, pour un peu plus de rapidité, il serait bon que tu précises les colonnes en jeu...

un code tel que celui ci-dessous retranscrits les "nombres" considérés comme "texte", en numérique :

Code:
Sub text_en_nombre()
Range("A1:A" & [A65000].End(xlUp).Row).Value = Range("A1:A" & [A65000].End(xlUp).Row).Value
End Sub

en supposant plusieurs onglets, et plusieurs colonnes :

Code:
Sub text_en_nombre2()
Dim I As Byte
Dim DerLig As Long
Dim Sh As Worksheet
For Each Sh In Sheets
    With Sh
        For I = 1 To 7 Step 3
            DerLig = .Cells(65000, I).End(xlUp).Row
            .Range(.Cells(1, I), .Cells(DerLig, I)).Value = .Range(.Cells(1, I), .Cells(DerLig, I)).Value
        Next I
    End With
Next Sh
End Sub

Dans le code ci-dessus, je regarde dans chaque onglet (Sh), et dans les colonnes A, D et G...

Tu vois, plein de possibilités, donc, donne des renseignements bien précis, tu auras une réponse bien précise...

Bonne soirée
 
Re : Convertir les nombres stockés en tant que texte en nombres

Re, salut bhbh 🙂

Tu utilises le même principe (.Value = .Value), mais il faut être bien sûr que les colonnes traitées ne contiennent jamais de formules.

A+
 
Re : Convertir les nombres stockés en tant que texte en nombres

Re bhbh,

Tu as raison, mais l'utilisation de SpecialCells(xlCellTypeConstants) est commode car elle permet aussi de travailler sur des zones (Areas) disjointes.

A+
 
Re : Convertir les nombres stockés en tant que texte en nombres


La méthode fonctionne à merveille. Encore merci à tous.
 
Re : Convertir les nombres stockés en tant que texte en nombres

J'ai fait ceci. Il passe toutes les cellules en revue, ceci met 1 heure à boucler. Mais pas de conversion en sortie.

Code:
Sub ConvertTxtToNum()

Sheets("BDD").Select

Range("A:C,G:G").Select

          For Each xCell In Selection
              xCell.Value = xCell.Value
          Next xCell

End Sub
 
Re : Convertir les nombres stockés en tant que texte en nombres

Bonjour arnaudbu,

Quand on écrit un code il faut comprendre ce qui se passe quand on l'exécute 😉

Il passe toutes les cellules en revue (...)

Qu'est-ce que vous voulez que la macro fasse d'autre ? C'est vous qui définissez la plage à étudier...

Mais pas de conversion en sortie

Si les cellules sont au format Texte, il n'y a pas de conversion évidemment. Il faut un format Nombre (ou Standard).

2 autres remarques :

- en VBA Select est en général inutile et à éviter

- quand on fait beaucoup de modifications, pour accélérer le code on écrit :

Application.ScreenUpdating = False

Edit : sous Excel 2003 (65536 lignes) votre macro s'exécute en 20-30 secondes. Sous Excel 2007, il y a beaucoup plus de lignes...

A+
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
11
Affichages
1 K
J
Réponses
4
Affichages
887
J
Réponses
13
Affichages
3 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…