Détection d'un premier chiffre et d'un deuxieme ?

avoriaz

XLDnaute Junior
bonjour, le forum

voila, je voudrais detecter le premier chiffre lorsque je rentre une formule dans un textbox ..

dvd1,o,7 Je voudrais detecter le 1

cd3,4,7 Je voudrais detecter le 4

bien sur les chiffres sont aleatoires, je voudrais savoir comment detecter la position et affiché ensuite le chiffre trouvé

si la formule commence par dvd, la je detecte le premier chiffre, si je commence par cd la je detecte le deuxieme ...

merci pour votre aide

avoriaz
 

Hervé

XLDnaute Barbatruc
Re:Détection d'un premier chiffre et d'un deuxieme

Bonjour avoriaz, le forum

peut etre comme ceci :


Private Sub TextBox1_Change()
Dim nombre As Byte, cpt As Byte
Dim i As Byte

Select Case Left(TextBox1, 2)
       
Case 'dv': nombre = 1
       
Case 'cd': nombre = 2
End Select

For i = 1 To Len(TextBox1)
       
If IsNumeric(Mid(TextBox1, i, 1)) Then
                cpt = cpt + 1
               
If cpt = nombre Then
                        MsgBox 'nombre : ' & Mid(TextBox1, i, 1) _
                        & vbNewLine & 'Emplacement : ' & i
               
End If
       
End If
Next i
       

End Sub


salut
 

avoriaz

XLDnaute Junior
Re:Détection d'un premier chiffre et d'un deuxieme

bonjour le forum,

bonjour hervé, tout d'abord merci pour ta réponse, j'ai un petit souci, mais le fichier sera plus explicatif que de longue phrase ..

au faite, en plus pour la saisie je voudrais mettre la fonction ucase pour minuscule ou majuscule


merci hervé pour ton aide une fois de plus :) [file name=essaisv1_20060225155006.zip size=9028]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/essaisv1_20060225155006.zip[/file]
 

Pièces jointes

  • essaisv1_20060225155006.zip
    8.8 KB · Affichages: 12

Hervé

XLDnaute Barbatruc
Re:Détection d'un premier chiffre et d'un deuxieme

BOnjour avoriaz

pour détecter des minuscules ou majuscules ajoute en tete du module en premiere ligne : option compare text

ainsi la macro travaillera aussi bien avec des minuscules que des majuscules :


Option Compare Text

Private Sub textbox1_Change()
Dim nombre As Byte, cpt As Byte
Dim i As Byte

Select Case Left(TextBox1, 3)
       
Case 'com': nombre = 1
       
Case '%nw': nombre = 2
End Select

For i = 1 To Len(TextBox1)
       
If IsNumeric(Mid(TextBox1, i, 1)) Then
                cpt = cpt + 1
               
If cpt = nombre Then
                        MsgBox 'nombre : ' & Mid(TextBox1, i, 1) _
                        & vbNewLine & 'Emplacement : ' & i
               
End If
       
End If
Next i
               

End Sub


salut et bon dimanche à tous
 

avoriaz

XLDnaute Junior
Re:Détection d'un premier chiffre et d'un deuxieme

merci hervé , ca marche impeccable.

je voulais faire une option supplementaire, detecter la premiere lettre aussi

dvf2 on detecte le 2 avec ta macro .ca c'est fais
je voudrais detecter aussi premiere lettre en partant de droite vers la gauche ici le f.

ou popof2 le f sera affiché ...

la j'ai recuperer le 2 dans un textbox.
je vais ensuite recupere le f dans une autre.

c'est pour une appli bien specifique ..

merci hervé, a mon tour je te souhaite , bonne soiree bon dimanche

avoriaz

Message édité par: avoriaz, à: 26/02/2006 19:06
 

Hervé

XLDnaute Barbatruc
Re:Détection d'un premier chiffre et d'un deuxieme

re avo

j'ai pas bien compris, car si tu recherche toujours le chiffre après com ou nùw, la lettre se trouvant avant le chiffre sera soit m soit w.

en tout cas, la macro boucle sur chaque caractère de la textbox par : for i=1 to len(textbox1)

il t'est facile de récupérer la lettre en variant le i, un exemple :

If IsNumeric(Mid(TextBox1, i, 1)) Then
cpt = cpt + 1
If cpt = nombre Then
lettre = Mid(TextBox1, i - 1, 1)

ce code va te donner la lettre se trouvant immédiatement avant un chiffre.

tandis que celui-ci :

lettre = Mid(TextBox1, i - 2, 1)

te donnera la lettre deux rangs avant ton chiffre.

salut
 

avoriaz

XLDnaute Junior
Re:Détection d'un premier chiffre et d'un deuxieme

bonjour hervé, bonjour le forum

et bien, je te fils mon fichier, tu va vite comprendre ce que je veux faire... la j'ai un probleme quandje tape au dessus de 9..

merci pour ton aide, c'est tres important pour moi.... en plus j'apprends pas mal de trucs ...


avoriaz [file name=herve_20060227185025.zip size=13930]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/herve_20060227185025.zip[/file]
 

Pièces jointes

  • herve_20060227185025.zip
    13.6 KB · Affichages: 13

Hervé

XLDnaute Barbatruc
Re:Détection d'un premier chiffre et d'un deuxieme

rebonjour avoriaz

j'ai pas tout compris à ton fichier :(

mais, si dans cette chaine comb10.5.3

tu veux trouver le 10 et le b, soit le premier numérique avant le . puis la premiere lettre avant le numérique, tu peux essayer ce code :


Dim tablo As Variant
Dim i As Byte, premier As Byte
Dim lettre As String
Dim nombre As Integer

tablo = Split(TextBox1, '.')
For i = 1 To Len(tablo(0))
       
If IsNumeric(Mid(tablo(0), i, 1)) Then
                nombre = nombre & Mid(tablo(0), i, 1)
               
If premier = 0 Then
                        lettre = Mid(tablo(0), i - 1, 1)
                        premier = 1
               
End If
       
End If
Next i

MsgBox Val(nombre)
MsgBox lettre


salut
 

avoriaz

XLDnaute Junior
Re:Détection d'un premier chiffre et d'un deuxieme

bonjour herve, comment va ce mardi

bonjour le forum

voila hervé grace a tes macro j'ai reussi a faire ce que je voulais...

mais, j'ai deux boutons valide pour separer les deux type d'ecriture car celon le type d'ecriture dans la textbox1, je repere pas le meme chiffre, et pour un cas sur deux je repere pas la lettre

voila le code:

Option Compare Text
Private Sub CommandButton1_Click() ' ecriture de la textbox1 sous fomre %nw(3,12,14) je repere le 12 seulement !

Dim tablo As Variant
Dim i As Byte, premier As Byte
Dim lettre As String
Dim nombre As Integer

tablo = Split(TextBox1, ',')
For i = 1 To Len(tablo(1))
If IsNumeric(Mid(tablo(1), i, 1)) Then
nombre = nombre & Mid(tablo(1), i, 1)
TextBox2.Value = Val(nombre)

End If

Next i
MsgBox Val(nombre)
End Sub


Private Sub CommandButton2_Click() ' ecriture de la textbox1 sous fomre comb 3,11,14 je repere le 3 et la lettre b .

Dim tablo As Variant
Dim i As Byte, premier As Byte
Dim lettre As String
Dim nombre As Integer

tablo = Split(TextBox1, ',')
For i = 1 To Len(tablo(0))
If IsNumeric(Mid(tablo(0), i, 1)) Then
nombre = nombre & Mid(tablo(0), i, 1)
TextBox2.Value = Val(nombre)
If premier = 0 Then
lettre = Mid(tablo(0), i - 1, 1)
premier = 1
TextBox3.Value = lettre

End If
End If
Next i

MsgBox Val(nombre)
MsgBox lettre
End Sub

en faite sous forme d'ecriture com: je repere la lettre et le premier chiffre

sous forme d'ecriture %nw(3,12,4) je repere que deuxieme chiffre (12)

la ca fonctionne, mais j'ai du separer deux macro donc 2 boutons de calcul, j'aurrai voulu 1 seul bouton

avoriaz
 

Hervé

XLDnaute Barbatruc
Re:Détection d'un premier chiffre et d'un deuxieme

re avoriaz :)

Il suffisait de fusionner les deux macros.


Private Sub CommandButton1_Click()
Dim nombre As Byte, premier As Byte
Dim i As Byte, chiffre As Byte
Dim tablo As Variant
Dim lettre As String

Select Case Left(TextBox1, 3)
               
Case 'com': nombre = 0
               
Case '%nw': nombre = 1
End Select

tablo = Split(TextBox1, ',')

For i = 1 To Len(tablo(nombre))
       
If IsNumeric(Mid(tablo(nombre), i, 1)) Then
                chiffre = chiffre & Mid(tablo(nombre), i, 1)
                TextBox2.Value = Val(chiffre)
               
If nombre = 0 And premier = 0 Then
                        lettre = Mid(tablo(nombre), i - 2, 1)
                        premier = 1
                        TextBox3.Value = lettre
               
End If
       
End If
Next i
End Sub


penses à rajouter des tests, vérifier que la textbox1 n'est pas vide, que l'utilisateur à bien saisi sous la forme com ou %nw.

salut
 

Discussions similaires

Statistiques des forums

Discussions
312 310
Messages
2 087 128
Membres
103 479
dernier inscrit
Compta