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
Version imprimable
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:
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
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:
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 niveauCitation:
Formidable merci .....mais ^^
il m'affiche des zéros dans toutes les cellules vides
en ajoutant une condition du styleCode:
1
2
3 ... If IsNumeric(Cellule) Then Cellule = Cellule * 1 ...
Code:...and Not IsEmpty(Cellule)...
Tout à fait d'accord avec casefayere pour les 0.
Pour la colonne D, change tout simplement la variable Plage
Code: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:
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 écritouCode:
1
2
3 For Each Cellule In Plage If IsNumeric(Cellule) And Not IsEmpty(Cellule) Then Cellule = Cellule * 1 Next
Code:
1
2
3 For Each Cellule In Plage If IsNumeric(Cellule) And Cellule <> "" Then Cellule = Cellule * 1 Next