Nombre sous forme de texte

Bonjour,

J'explique la situation. - voir fichier en pièce jointe

Je récupère des données depuis un logiciel - copier / coller

il y a un espace entre les milliers et les centaines.

J'ai donc enregistré une macro pour remplacer cet espace par rien pour obtenir des chiffres cohérents.

Toutefois, lorsque je lance cette macro, les nombres sont sous forme de texte

J'ai trouvé une solution mais qui marche uniquement pour 1 cellule (A1) ... et je ne sais pas comment appliquer cela à toute la feuille ?

Sub TEST()
'
' TEST Macro
'

'
Cells.Select
Selection.Replace What:=" ", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2

Set myvar = ActiveSheet.Range("A1")
num = IsNumeric(myvar) ' je teste si la valeur est de type numérique
If num = True Then ' si c'est le cas
ActiveSheet.Range("A1") = CDec(myvar) ' je la réinscrit en nombre
End If

End Sub

Aurriez vous une solution ?

Merci par avance

5classeur1.xlsm (15.74 Ko)

Bonjour à tous !

Par formule !

Pour traiter la valeur de la cellule A1 :

=VALEURNOMBRE(A1;",";CAR(160))

Pour A1 uniquement la macro fonctionne déja, mais moi je veux traiter toute la feuille ou au mini les 3 premières colonnes.

Bonjour à tous de nouveau !

Vous évoluez sous Excel 365..... ====> Ne passez pas à côté des formules matricielles dynamiques :

=VALEURNOMBRE(A1:C9;",";CAR(160))

La plage est à moduler en fonction de votre feuille réelle. Cette formule unique et dynamique vous retournera une plage de valeurs numériques.

Merci pour cette aide précieuse, mais....comment inclure cela dans ma macro ?

l'idée est d'appuyer sur un bouton unique et de tout traiter en une seule fois.

Bonjour à tous de nouveau !

Pourquoi réinventer la roue ? Vous avez, nativement, une fonction qui vous retourne le résultat attendu.

Si vous tenez absolument à passer par VBA, je passe la main aux thuriféraires de la chose.

excellent... je ne veux pas réinventer la roue ! j'en serai incapable

En fait cette petite partie qui est abordée dans ce sujet s'inscrit dans un classeur avec plein de fonctionnalités pour plusieurs utilisateurs. Qui pour certain maitrise encore moins excel que moi.

Donc l'utilisateur copie des colonnes de données dans un logiciel, les colles dans excel et en appuyant sur un seul bouton cela traite les valeurs collées sans autre manipulation.

Donc oui je cherche plus un code vba si c'est possible.

Merci

Bonsoir,

JFL bonsoir !

Un essai :

Sub LouReeD()
    Dim LaPlage As Range, I As Long, J As Long, Tablo
    ' récupération de la plage de cellules utilisée sur la feuille active
    Set LaPlage = ActiveSheet.UsedRange
    ' mise des valeurs de la plage dans un tableau
    Tablo = LaPlage
    ' scan du tableau de donnée pour les transformer en numérique
    For I = 1 To UBound(Tablo, 1)
        For J = 1 To UBound(Tablo, 2)
            ' s'il y a une donnée
            If Tablo(I, J) <> "" Then
                ' si la valeur est numérique alors on la converti en décimale
                If IsNumeric(Tablo(I, J)) Then Tablo(I, J) = CDec(Tablo(I, J))
            End If
        Next J
    Next I
    ' recopie des données du tableau sur la plage
    Range(LaPlage(1, 1).Address).Resize(UBound(Tablo, 1), UBound(Tablo, 2)) = Tablo
    ' mise au format avec 2 décimales
    LaPlage.NumberFormat = "0.00"
End Sub

Le fichier :

3classeur1-lrd.xlsm (20.54 Ko)

@ bientôt

LouReeD

ok... ta solution semble fonctionner à merveille !

je regarde ca de plus près demain.

1000 merci

Bonsoir,

les tests ont été concluant ? Merci pour vos remerciements !

@ bientôt

LouReeD

Oui....c'est en développement. Mais cette partie fonctionne.

Merci encore

J'espère que ça pourra en aider d'autres...

Rechercher des sujets similaires à "nombre forme texte"