OVH Cloud OVH Cloud

Seulement des chiffres

6 réponses
Avatar
JeanPasse
Bonjour

Je patauge avec des IF et des FOR alors qu'il doit exister de méthodes
simples...
En VBA, Excel 97, Windows X

For photo = 1 To Range("C6").Value
tx = Range("A9").Offset(photo, 0).Value
separe1 = InStr(5, tx, "_")
Range("C9").Offset(photo, 0).Select
Selection.NumberFormat = "@"
Selection.Value = Mid(tx, 6, separe1 - 6)
Next

En C10 débute une colonne contenant parfois 4 chiffres, parfois des entrées
comme 1234-a1-18-3
Les 4 chiffres s'écrivent à droite, les autres à gauche comme du texte.
C6 contient le nombre de photos ou de ligne dans la colonne)

Ma question :
Je désire tester que les 4 caractères de gauche sont des chiffres - je
m'embrouille
Résultat : Oui, je continu. Non, ERREUR j'arrête pour une correction
manuelle.

Question secondaire : Comment formater à gauche directement dans une ligne
comme
Range("C9").Offset(photo, 0).Value = Mid(tx, 6, separe1 - 6)

Je pensais que Mid aurait défini une chaine de caractères même s'il s'agit
de 4 chiffres.

Merci pour vos conseils

René

6 réponses

Avatar
isabelle
bonjour René,

que veut tu récupérer de 1234-a1-18-3
1234
ou bien
1183
?

isabelle



Bonjour

Je patauge avec des IF et des FOR alors qu'il doit exister de méthodes
simples...
En VBA, Excel 97, Windows X

For photo = 1 To Range("C6").Value
tx = Range("A9").Offset(photo, 0).Value
separe1 = InStr(5, tx, "_")
Range("C9").Offset(photo, 0).Select
Selection.NumberFormat = "@"
Selection.Value = Mid(tx, 6, separe1 - 6)
Next

En C10 débute une colonne contenant parfois 4 chiffres, parfois des entrées
comme 1234-a1-18-3
Les 4 chiffres s'écrivent à droite, les autres à gauche comme du texte.
C6 contient le nombre de photos ou de ligne dans la colonne)

Ma question :
Je désire tester que les 4 caractères de gauche sont des chiffres - je
m'embrouille
Résultat : Oui, je continu. Non, ERREUR j'arrête pour une correction
manuelle.

Question secondaire : Comment formater à gauche directement dans une ligne
comme
1234-a1-18-3

Range("C9").Offset(photo, 0).Value = Mid(tx, 6, separe1 - 6)

Je pensais que Mid aurait défini une chaine de caractères même s'il s'agit
de 4 chiffres.

Merci pour vos conseils

René




Avatar
JeanPasse
Merci de regarder mes questions

je veux tester seulement les 4 de gauche 1234
Pour le moment j'ai trouvé ceci:

For i = 1 To 4
If (Mid(Selection.Value, i, 1) < Chr(47) Or Mid(Selection.Value, i,
1) > Chr(58)) Then GoTo trouvepasChiffre
Next

J'ai essayé avec
If Not (InStr("0123456789", Mid(Selection.Value, i, 1), 2)) Then GoTo
trouvepasChiffre
mais il y a quelque chose que je n'ai pas compris. Ca ne marche pas.

René

"isabelle" a écrit dans le message de news:

bonjour René,

que veut tu récupérer de 1234-a1-18-3
1234
ou bien
1183
?

isabelle



Bonjour

Je patauge avec des IF et des FOR alors qu'il doit exister de méthodes
simples...
En VBA, Excel 97, Windows X

For photo = 1 To Range("C6").Value
tx = Range("A9").Offset(photo, 0).Value
separe1 = InStr(5, tx, "_")
Range("C9").Offset(photo, 0).Select
Selection.NumberFormat = "@"
Selection.Value = Mid(tx, 6, separe1 - 6)
Next

En C10 débute une colonne contenant parfois 4 chiffres, parfois des
entrées comme 1234-a1-18-3
Les 4 chiffres s'écrivent à droite, les autres à gauche comme du texte.
C6 contient le nombre de photos ou de ligne dans la colonne)

Ma question :
Je désire tester que les 4 caractères de gauche sont des chiffres -
je m'embrouille
Résultat : Oui, je continu. Non, ERREUR j'arrête pour une correction
manuelle.

Question secondaire : Comment formater à gauche directement dans une
ligne comme
1234-a1-18-3

Range("C9").Offset(photo, 0).Value = Mid(tx, 6, separe1 - 6)

Je pensais que Mid aurait défini une chaine de caractères même s'il
s'agit de 4 chiffres.

Merci pour vos conseils

René





Avatar
isabelle
bonjour René,

j'ai fait le tes avec,

1234-1-2-5-y
12k4-1-2-5-y

For i = 1 To 2
On Error Resume Next
x = Left(Range("A" & i), 4)
For y = 1 To 4
If IsNumeric(y) Then c = c + 1
Next
If c = 4 Then MsgBox "c'est un chiffre"
Next

isabelle


Merci de regarder mes questions

je veux tester seulement les 4 de gauche 1234
Pour le moment j'ai trouvé ceci:

For i = 1 To 4
If (Mid(Selection.Value, i, 1) < Chr(47) Or Mid(Selection.Value, i,
1) > Chr(58)) Then GoTo trouvepasChiffre
Next

J'ai essayé avec
If Not (InStr("0123456789", Mid(Selection.Value, i, 1), 2)) Then GoTo
trouvepasChiffre
mais il y a quelque chose que je n'ai pas compris. Ca ne marche pas.

René

"isabelle" a écrit dans le message de news:


bonjour René,

que veut tu récupérer de 1234-a1-18-3
1234
ou bien
1183
?

isabelle




Bonjour

Je patauge avec des IF et des FOR alors qu'il doit exister de méthodes
simples...
En VBA, Excel 97, Windows X

For photo = 1 To Range("C6").Value
tx = Range("A9").Offset(photo, 0).Value
separe1 = InStr(5, tx, "_")
Range("C9").Offset(photo, 0).Select
Selection.NumberFormat = "@"
Selection.Value = Mid(tx, 6, separe1 - 6)
Next

En C10 débute une colonne contenant parfois 4 chiffres, parfois des
entrées comme 1234-a1-18-3
Les 4 chiffres s'écrivent à droite, les autres à gauche comme du texte.
C6 contient le nombre de photos ou de ligne dans la colonne)

Ma question :
Je désire tester que les 4 caractères de gauche sont des chiffres -
je m'embrouille
Résultat : Oui, je continu. Non, ERREUR j'arrête pour une correction
manuelle.

Question secondaire : Comment formater à gauche directement dans une
ligne comme


1234-a1-18-3

Range("C9").Offset(photo, 0).Value = Mid(tx, 6, separe1 - 6)

Je pensais que Mid aurait défini une chaine de caractères même s'il
s'agit de 4 chiffres.

Merci pour vos conseils

René









Avatar
Damien Kergosien
Bonsoir JeanPasse

avec la chaine à tester en A1, ceci suffit :
IsNumeric(Left$(Range("A1").Value, 4))

Damien

Merci de regarder mes questions

je veux tester seulement les 4 de gauche 1234
Pour le moment j'ai trouvé ceci:

For i = 1 To 4
If (Mid(Selection.Value, i, 1) < Chr(47) Or Mid(Selection.Value, i,
1) > Chr(58)) Then GoTo trouvepasChiffre
Next

J'ai essayé avec
If Not (InStr("0123456789", Mid(Selection.Value, i, 1), 2)) Then GoTo
trouvepasChiffre
mais il y a quelque chose que je n'ai pas compris. Ca ne marche pas.

René

"isabelle" a écrit dans le message de news:

bonjour René,

que veut tu récupérer de 1234-a1-18-3
1234
ou bien
1183
?

isabelle



Bonjour

Je patauge avec des IF et des FOR alors qu'il doit exister de méthodes
simples...
En VBA, Excel 97, Windows X

For photo = 1 To Range("C6").Value
tx = Range("A9").Offset(photo, 0).Value
separe1 = InStr(5, tx, "_")
Range("C9").Offset(photo, 0).Select
Selection.NumberFormat = "@"
Selection.Value = Mid(tx, 6, separe1 - 6)
Next

En C10 débute une colonne contenant parfois 4 chiffres, parfois des
entrées comme 1234-a1-18-3
Les 4 chiffres s'écrivent à droite, les autres à gauche comme du texte.
C6 contient le nombre de photos ou de ligne dans la colonne)

Ma question :
Je désire tester que les 4 caractères de gauche sont des chiffres - je
m'embrouille
Résultat : Oui, je continu. Non, ERREUR j'arrête pour une correction
manuelle.

Question secondaire : Comment formater à gauche directement dans une ligne
comme
1234-a1-18-3

Range("C9").Offset(photo, 0).Value = Mid(tx, 6, separe1 - 6)

Je pensais que Mid aurait défini une chaine de caractères même s'il s'agit
de 4 chiffres.

Merci pour vos conseils

René







Avatar
JeanPasse
Merci à vous deux

IsNumeric
c'est vraiment plus simple. Je regarde ceal ce soir.

René

"Damien Kergosien" a écrit dans le message de news:

Bonsoir JeanPasse

avec la chaine à tester en A1, ceci suffit :
IsNumeric(Left$(Range("A1").Value, 4))

Damien

Merci de regarder mes questions

je veux tester seulement les 4 de gauche 1234
Pour le moment j'ai trouvé ceci:

For i = 1 To 4
If (Mid(Selection.Value, i, 1) < Chr(47) Or Mid(Selection.Value,
i, 1) > Chr(58)) Then GoTo trouvepasChiffre
Next

J'ai essayé avec
If Not (InStr("0123456789", Mid(Selection.Value, i, 1), 2)) Then GoTo
trouvepasChiffre
mais il y a quelque chose que je n'ai pas compris. Ca ne marche pas.

René

"isabelle" a écrit dans le message de news:

bonjour René,

que veut tu récupérer de 1234-a1-18-3
1234
ou bien
1183
?

isabelle



Bonjour

Je patauge avec des IF et des FOR alors qu'il doit exister de méthodes
simples...
En VBA, Excel 97, Windows X

For photo = 1 To Range("C6").Value
tx = Range("A9").Offset(photo, 0).Value
separe1 = InStr(5, tx, "_")
Range("C9").Offset(photo, 0).Select
Selection.NumberFormat = "@"
Selection.Value = Mid(tx, 6, separe1 - 6)
Next

En C10 débute une colonne contenant parfois 4 chiffres, parfois des
entrées comme 1234-a1-18-3
Les 4 chiffres s'écrivent à droite, les autres à gauche comme du texte.
C6 contient le nombre de photos ou de ligne dans la colonne)

Ma question :
Je désire tester que les 4 caractères de gauche sont des chiffres -
je m'embrouille
Résultat : Oui, je continu. Non, ERREUR j'arrête pour une
correction manuelle.

Question secondaire : Comment formater à gauche directement dans une
ligne comme
1234-a1-18-3

Range("C9").Offset(photo, 0).Value = Mid(tx, 6, separe1 - 6)

Je pensais que Mid aurait défini une chaine de caractères même s'il
s'agit de 4 chiffres.

Merci pour vos conseils

René











Avatar
JeanPasse
Après essais, j'ai du conserver la boucle de vérification individuelle sur
les 4 caractères car la présence d'une virgule n'est pas détectée.
C'est malgré tout un peu mieux.que mon code précédent.
Merci
"Damien Kergosien" a écrit dans le message de news:

Bonsoir JeanPasse

avec la chaine à tester en A1, ceci suffit :
IsNumeric(Left$(Range("A1").Value, 4))

Damien