bonjour
débutant en vba :
je tente de déterminer, dans toutes les cellules d' une colonne bien précise, si les données sont numériques ou alphanumériques
mais je bloque ^^
j'ai besoin de votre aide
Merci d'avance
bonjour
débutant en vba :
je tente de déterminer, dans toutes les cellules d' une colonne bien précise, si les données sont numériques ou alphanumériques
mais je bloque ^^
j'ai besoin de votre aide
Merci d'avance
Bonjour,
Tu pourrais regarder l'aide sous IsNumeric()
Salut à tous,
@Bilcosby, Tu peux utiliser IsNumeric (peut être interprété comme un nombre?) ou WorksheetFunction.IsNumber (Est un nombre?) pour déterminer si la valeur est numérique et WorksheetFunction.IsText (Est un texte?) pour déterminer si la valeur est alphanumérique.
En supposant que tes valeurs sont dans la colonne A, essaie d'implémenter ce code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Sub TypeDonnees() With ThisWorkbook.Sheets("NomFeuille") Dim nb AS Long nb=.Range("A" & .Rows.Count).End(xlup).Row ' détermine la dernière celle non vide de la colonne A For i=1 to nb ' Si tes données commencent à la ligne 1 'Affiche Numérique dans la colonne B si la valeur est numérique et Alphanumérique si alphanumérique If WorksheetFunction.IsNumber(.Range("A" & i).Value) Then .Range("B" & i).Value="Numérique" Elseif WorksheetFunction.IsText(.Range("A" & i).Value) Then .Range("B" & i).Value="Alphanumérique" End if Next End With End Sub
Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités
Merci de votre aide
j'ai cependant un petit souci
Cela marcherait sauf que :
il ne fait pas la différence entre alpha et le num, il y a un petit triangle vert en haut à gauche de la cellule concernée => "nombre au format texte"
Il suffit que je "clic dedans" et le triangle disparait !
Je relance et là ça marche
Si je sélectionne la colonne entière et que je mets tout au format "nombre", elle ne le prend pas en compte ! idem avec clic droit sur la dite cellule (sans "rentrer" dedans)
je ne voie pas comment la repérer si elle est traitée en alpha, étant donnée que la valeur numérique peut être différente..
Je bloque ^^
L'idéal serait que tu transformes toutes données numériques en nombre (voir code)
C'est souvent le cas quand on importe des données de certains systèmes.
Les chiffres sont inscrits comme du texte et, du coup, les formules ne trouve rien...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Sub Changer_VALEUR_en_NOMBRE() Dim Cellule As Range, Plage As Range Dim nbLignes As Long, nbColonnes As Long nbLignes = Cells.Find("*", , , , xlByRows, xlPrevious).Row nbColonnes = Cells.Find("*", , , , xlByColumns, xlPrevious).Column Set Plage = Range(Cells(1, 1), Cells(nbLignes, nbColonnes)) Application.Calculation = xlCalculationManual For Each Cellule In Plage If IsNumeric(Cellule) Then Cellule = Cellule * 1 Next Application.Calculation = xlCalculationAutomatic MsgBox "OK" End Sub
Formidable merci .....mais ^^
il m'affiche des zéros dans toutes les cellules vides
J'ai testé différentes choses en vain !
Pourrais tu me dire comment l’exécuter sur la colonne D seulement, et si possible, eviter les zéros !
Si j'avais du temps je m'y serais penché plus sérieusement, mais je me sers que très rarement des macro
Je suis plutôt net ( php css & js )
Merci d'avance
je pense qu'il est simple d'adapter le code à parmi à ce niveauFormidable merci .....mais ^^
il m'affiche des zéros dans toutes les cellules videsen ajoutant une condition du style
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ... If IsNumeric(Cellule) Then Cellule = Cellule * 1 ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part ...and Not IsEmpty(Cellule)...
Cordialement,
Dom
_____________________________________________
Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
pensez à cliquer sur :resolu: si votre problème l'est
Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)
Tout à fait d'accord avec casefayere pour les 0.
Pour la colonne D, change tout simplement la variable Plage
Code : Sélectionner tout - Visualiser dans une fenêtre à part Set Plage = Range(Cells(1, 4), Cells(nbLignes, 4))
Voila c'est ok
Voici ce que j'ai fait grâce à vous ( même si j'ai pas tout compris ) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Dim Cellule As Range, Plage As Range Dim nbLignes As Long nbLignes = Cells.Find("*", , , , xlByRows, xlPrevious).Row Set Plage = Range(Cells(1, 4), Cells(nbLignes, 4)) Application.Calculation = xlCalculationManual For Each Cellule In Plage If IsNumeric(Cellule) Then Cellule = Cellule * 1 If Cellule = 0 Then Cellule = "" Next Application.Calculation = xlCalculationAutomatic
Merci à vous tous et à bientôt
.
.
J'aurais écritou
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 For Each Cellule In Plage If IsNumeric(Cellule) And Not IsEmpty(Cellule) Then Cellule = Cellule * 1 Next
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 For Each Cellule In Plage If IsNumeric(Cellule) And Cellule <> "" Then Cellule = Cellule * 1 Next
Cordialement,
Dom
_____________________________________________
Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
pensez à cliquer sur :resolu: si votre problème l'est
Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)
Partager