Index / Equiv en VBa dans mon UF je suis plantée....
9 réponses
SylVBA
Au secours je cale (et je ne comprends pas !)
Merci aux excellents contributeurs du temps qu'ils vont m'accorder
pour la r=E9solution de ce probl=E8me...
J'ai fait UserForm de saisie :
Dans un TextBox je saisis un code =E0 5 chiffre (ex 99999)
Mon textbox se nomme << TextBox1 >>
J'ai un label qui se nomme << NomClient >>
Mon userform se nomme << SaisieMr >>
Je suis sur l'une des deux feuilles du classeur (onglet actif << Comm
>>)
Sur un AUTRE onglet (<< BDD >>) j'ai une base de donn=E9es avec en colonne
A environ 1500 codes et en colonne E le nom de chaque client associ=E9 =E0
son code
Je souhaite que suite =E0 la saisie dans le textBox1 du code du client,
que le UF fasse une mise =E0 jour et affiche (caption de << NomClient >>)
l'=E9quivalence du code, donc le nom du client ... pas si compliqu=E9
pourtant =A7=A7=A7=A7
Par exemple lors de la saisie de 99999 je souhaite voir afficher <<
Clients divers >>
Un autre exemple, la saisie de 20220 donnera CGV m=E9dical
J'ai essay=E9 de l'index/equiv en vba, pas moyen de trouver la bonne
syntaxe !! et il y a peut =EAtre une autre piste
Je gal=E8re depuis plus de 2 heures et ne comprends pas comment trouver
la solution...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Daniel.C
Bonjour.
Private Sub TextBox1_Change() If Len(TextBox1.Value) = 5 Then ctr = Application.Match(TextBox1.Value, Sheets("BDD").Columns(1), 0) If IsNumeric(ctr) Then NomClient .Caption = Application.Index(Sheets("BDD").Columns(5), ctr) End If End If End Sub
Note : si les codes de la colonne A sont stockés sous forme de nombres, il faut mettre : ctr = Application.Match(CInt(TextBox1.Value), Sheets("BDD").Columns(1), 0) Cordialement. Daniel "SylVBA" a écrit dans le message de news:
Au secours je cale (et je ne comprends pas !)
Merci aux excellents contributeurs du temps qu'ils vont m'accorder pour la résolution de ce problème...
J'ai fait UserForm de saisie :
Dans un TextBox je saisis un code à 5 chiffre (ex 99999) Mon textbox se nomme << TextBox1 >>
J'ai un label qui se nomme << NomClient >>
Mon userform se nomme << SaisieMr >>
Je suis sur l'une des deux feuilles du classeur (onglet actif << Comm
)
Sur un AUTRE onglet (<< BDD >>) j'ai une base de données avec en colonne A environ 1500 codes et en colonne E le nom de chaque client associé à son code
Je souhaite que suite à la saisie dans le textBox1 du code du client, que le UF fasse une mise à jour et affiche (caption de << NomClient >>) l'équivalence du code, donc le nom du client ... pas si compliqué pourtant §§§§
Par exemple lors de la saisie de 99999 je souhaite voir afficher << Clients divers >> Un autre exemple, la saisie de 20220 donnera CGV médical
J'ai essayé de l'index/equiv en vba, pas moyen de trouver la bonne syntaxe !! et il y a peut être une autre piste
Je galère depuis plus de 2 heures et ne comprends pas comment trouver la solution...
Vivement les vacances !!!!!
Merci d'avance de votre précieuse aide
Syl VBA
Bonjour.
Private Sub TextBox1_Change()
If Len(TextBox1.Value) = 5 Then
ctr = Application.Match(TextBox1.Value, Sheets("BDD").Columns(1), 0)
If IsNumeric(ctr) Then
NomClient .Caption = Application.Index(Sheets("BDD").Columns(5),
ctr)
End If
End If
End Sub
Note : si les codes de la colonne A sont stockés sous forme de nombres, il
faut mettre :
ctr = Application.Match(CInt(TextBox1.Value), Sheets("BDD").Columns(1),
0)
Cordialement.
Daniel
"SylVBA" <sylvie.laurent82@wanadoo.fr> a écrit dans le message de news:
3a8f41ee-481e-4104-9254-9f92265609d3@i12g2000prf.googlegroups.com...
Au secours je cale (et je ne comprends pas !)
Merci aux excellents contributeurs du temps qu'ils vont m'accorder
pour la résolution de ce problème...
J'ai fait UserForm de saisie :
Dans un TextBox je saisis un code à 5 chiffre (ex 99999)
Mon textbox se nomme << TextBox1 >>
J'ai un label qui se nomme << NomClient >>
Mon userform se nomme << SaisieMr >>
Je suis sur l'une des deux feuilles du classeur (onglet actif << Comm
)
Sur un AUTRE onglet (<< BDD >>) j'ai une base de données avec en colonne
A environ 1500 codes et en colonne E le nom de chaque client associé à
son code
Je souhaite que suite à la saisie dans le textBox1 du code du client,
que le UF fasse une mise à jour et affiche (caption de << NomClient >>)
l'équivalence du code, donc le nom du client ... pas si compliqué
pourtant §§§§
Par exemple lors de la saisie de 99999 je souhaite voir afficher <<
Clients divers >>
Un autre exemple, la saisie de 20220 donnera CGV médical
J'ai essayé de l'index/equiv en vba, pas moyen de trouver la bonne
syntaxe !! et il y a peut être une autre piste
Je galère depuis plus de 2 heures et ne comprends pas comment trouver
la solution...
Private Sub TextBox1_Change() If Len(TextBox1.Value) = 5 Then ctr = Application.Match(TextBox1.Value, Sheets("BDD").Columns(1), 0) If IsNumeric(ctr) Then NomClient .Caption = Application.Index(Sheets("BDD").Columns(5), ctr) End If End If End Sub
Note : si les codes de la colonne A sont stockés sous forme de nombres, il faut mettre : ctr = Application.Match(CInt(TextBox1.Value), Sheets("BDD").Columns(1), 0) Cordialement. Daniel "SylVBA" a écrit dans le message de news:
Au secours je cale (et je ne comprends pas !)
Merci aux excellents contributeurs du temps qu'ils vont m'accorder pour la résolution de ce problème...
J'ai fait UserForm de saisie :
Dans un TextBox je saisis un code à 5 chiffre (ex 99999) Mon textbox se nomme << TextBox1 >>
J'ai un label qui se nomme << NomClient >>
Mon userform se nomme << SaisieMr >>
Je suis sur l'une des deux feuilles du classeur (onglet actif << Comm
)
Sur un AUTRE onglet (<< BDD >>) j'ai une base de données avec en colonne A environ 1500 codes et en colonne E le nom de chaque client associé à son code
Je souhaite que suite à la saisie dans le textBox1 du code du client, que le UF fasse une mise à jour et affiche (caption de << NomClient >>) l'équivalence du code, donc le nom du client ... pas si compliqué pourtant §§§§
Par exemple lors de la saisie de 99999 je souhaite voir afficher << Clients divers >> Un autre exemple, la saisie de 20220 donnera CGV médical
J'ai essayé de l'index/equiv en vba, pas moyen de trouver la bonne syntaxe !! et il y a peut être une autre piste
Je galère depuis plus de 2 heures et ne comprends pas comment trouver la solution...
Vivement les vacances !!!!!
Merci d'avance de votre précieuse aide
Syl VBA
JB
Bonsoir,
Private Sub TextBox1_Change() Set c = Sheets("bdd").[A:A].Find(Me.TextBox1, LookIn:=xlValues, LookAt:=xlWhole) If Not c Is Nothing Then Me.NomClient.Caption = c.Offset(0, 4).Value End If End Sub
http://cjoint.com/?cAtdol1Zh6
JB
On 26 fév, 18:31, SylVBA wrote:
Au secours je cale (et je ne comprends pas !)
Merci aux excellents contributeurs du temps qu'ils vont m'accorder pour la résolution de ce problème...
J'ai fait UserForm de saisie :
Dans un TextBox je saisis un code à 5 chiffre (ex 99999) Mon textbox se nomme << TextBox1 >>
J'ai un label qui se nomme << NomClient >>
Mon userform se nomme << SaisieMr >>
Je suis sur l'une des deux feuilles du classeur (onglet actif << Comm
)
Sur un AUTRE onglet (<< BDD >>) j'ai une base de données avec en colonne A environ 1500 codes et en colonne E le nom de chaque client associé à son code
Je souhaite que suite à la saisie dans le textBox1 du code du client, que le UF fasse une mise à jour et affiche (caption de << NomClient >>) l'équivalence du code, donc le nom du client ... pas si compliqué pourtant §§§§
Par exemple lors de la saisie de 99999 je souhaite voir afficher << Clients divers >> Un autre exemple, la saisie de 20220 donnera CGV médical
J'ai essayé de l'index/equiv en vba, pas moyen de trouver la bonne syntaxe !! et il y a peut être une autre piste
Je galère depuis plus de 2 heures et ne comprends pas comment trouver la solution...
Vivement les vacances !!!!!
Merci d'avance de votre précieuse aide
Syl VBA
Bonsoir,
Private Sub TextBox1_Change()
Set c = Sheets("bdd").[A:A].Find(Me.TextBox1, LookIn:=xlValues,
LookAt:=xlWhole)
If Not c Is Nothing Then
Me.NomClient.Caption = c.Offset(0, 4).Value
End If
End Sub
http://cjoint.com/?cAtdol1Zh6
JB
On 26 fév, 18:31, SylVBA <sylvie.lauren...@wanadoo.fr> wrote:
Au secours je cale (et je ne comprends pas !)
Merci aux excellents contributeurs du temps qu'ils vont m'accorder
pour la résolution de ce problème...
J'ai fait UserForm de saisie :
Dans un TextBox je saisis un code à 5 chiffre (ex 99999)
Mon textbox se nomme << TextBox1 >>
J'ai un label qui se nomme << NomClient >>
Mon userform se nomme << SaisieMr >>
Je suis sur l'une des deux feuilles du classeur (onglet actif << Comm
)
Sur un AUTRE onglet (<< BDD >>) j'ai une base de données avec en colonne
A environ 1500 codes et en colonne E le nom de chaque client associé à
son code
Je souhaite que suite à la saisie dans le textBox1 du code du client,
que le UF fasse une mise à jour et affiche (caption de << NomClient >>)
l'équivalence du code, donc le nom du client ... pas si compliqué
pourtant §§§§
Par exemple lors de la saisie de 99999 je souhaite voir afficher <<
Clients divers >>
Un autre exemple, la saisie de 20220 donnera CGV médical
J'ai essayé de l'index/equiv en vba, pas moyen de trouver la bonne
syntaxe !! et il y a peut être une autre piste
Je galère depuis plus de 2 heures et ne comprends pas comment trouver
la solution...
Private Sub TextBox1_Change() Set c = Sheets("bdd").[A:A].Find(Me.TextBox1, LookIn:=xlValues, LookAt:=xlWhole) If Not c Is Nothing Then Me.NomClient.Caption = c.Offset(0, 4).Value End If End Sub
http://cjoint.com/?cAtdol1Zh6
JB
On 26 fév, 18:31, SylVBA wrote:
Au secours je cale (et je ne comprends pas !)
Merci aux excellents contributeurs du temps qu'ils vont m'accorder pour la résolution de ce problème...
J'ai fait UserForm de saisie :
Dans un TextBox je saisis un code à 5 chiffre (ex 99999) Mon textbox se nomme << TextBox1 >>
J'ai un label qui se nomme << NomClient >>
Mon userform se nomme << SaisieMr >>
Je suis sur l'une des deux feuilles du classeur (onglet actif << Comm
)
Sur un AUTRE onglet (<< BDD >>) j'ai une base de données avec en colonne A environ 1500 codes et en colonne E le nom de chaque client associé à son code
Je souhaite que suite à la saisie dans le textBox1 du code du client, que le UF fasse une mise à jour et affiche (caption de << NomClient >>) l'équivalence du code, donc le nom du client ... pas si compliqué pourtant §§§§
Par exemple lors de la saisie de 99999 je souhaite voir afficher << Clients divers >> Un autre exemple, la saisie de 20220 donnera CGV médical
J'ai essayé de l'index/equiv en vba, pas moyen de trouver la bonne syntaxe !! et il y a peut être une autre piste
Je galère depuis plus de 2 heures et ne comprends pas comment trouver la solution...
Vivement les vacances !!!!!
Merci d'avance de votre précieuse aide
Syl VBA
SylVBA
Merci daniel,
oui les codes sont sous forme de nombres.
Peux tu m'expliquer le code, j'ai du mal à comprendre le pourquoi du comment ?
Toujours un plaisir de trainer ici
bises
Syl VBA
Merci daniel,
oui les codes sont sous forme de nombres.
Peux tu m'expliquer le code, j'ai du mal à comprendre le pourquoi du
comment ?
Je viens de voir la réponse de JB, c'est parfait, il n'y a pas de dépassement de capacité avec cela
J'avais cherché par la bas (avec find) mais pas trouvé toute seule !
Merci JB ce n'est pas la première fois que tu me sauves la fin de soirée
Avez vous une explication pour le dépassement de capacité ?
merci et bises
Syl VBA
JB
Cint convertit jusqu'à 32767.
Private Sub TextBox1_Change() If Len(TextBox1.Value) = 5 Then ctr = Application.Match(CDbl(TextBox1.Value), Sheets("BDD").Columns(1), 0) If Not IsError(ctr) Then NomClient.Caption = Application.Index(Sheets("BDD").Columns(5), ctr) End If End If End Sub
JB
On 26 fév, 19:27, SylVBA wrote:
Bonsoir again,
Je viens de voir la réponse de JB, c'est parfait, il n'y a pas de dépassement de capacité avec cela
J'avais cherché par la bas (avec find) mais pas trouvé toute seule !
Merci JB ce n'est pas la première fois que tu me sauves la fin de soirée
Avez vous une explication pour le dépassement de capacité ?
merci et bises
Syl VBA
Cint convertit jusqu'à 32767.
Private Sub TextBox1_Change()
If Len(TextBox1.Value) = 5 Then
ctr = Application.Match(CDbl(TextBox1.Value),
Sheets("BDD").Columns(1), 0)
If Not IsError(ctr) Then
NomClient.Caption =
Application.Index(Sheets("BDD").Columns(5), ctr)
End If
End If
End Sub
JB
On 26 fév, 19:27, SylVBA <sylvie.lauren...@wanadoo.fr> wrote:
Bonsoir again,
Je viens de voir la réponse de JB, c'est parfait, il n'y a pas de
dépassement de capacité avec cela
J'avais cherché par la bas (avec find) mais pas trouvé toute seule !
Merci JB ce n'est pas la première fois que tu me sauves la fin de
soirée
Avez vous une explication pour le dépassement de capacité ?
Private Sub TextBox1_Change() If Len(TextBox1.Value) = 5 Then ctr = Application.Match(CDbl(TextBox1.Value), Sheets("BDD").Columns(1), 0) If Not IsError(ctr) Then NomClient.Caption = Application.Index(Sheets("BDD").Columns(5), ctr) End If End If End Sub
JB
On 26 fév, 19:27, SylVBA wrote:
Bonsoir again,
Je viens de voir la réponse de JB, c'est parfait, il n'y a pas de dépassement de capacité avec cela
J'avais cherché par la bas (avec find) mais pas trouvé toute seule !
Merci JB ce n'est pas la première fois que tu me sauves la fin de soirée
Avez vous une explication pour le dépassement de capacité ?
'* la macro se déclenche à chaque ajout ou suppression de caractère Private Sub TextBox1_Change() '* Si il n'y a pas 5 caractères dans le textbox, on ne fait rien If Len(TextBox1.Value) = 5 Then '* on effectue un EQUIV de la valeur du textbox transformée en numérique dans la colonne A de la feuille BDD '* ctr représente la ligne du numéro de code ctr = Application.Match(Cdbl(TextBox1.Value), Sheets("BDD").Columns(1), 0) '* Si "ctr" est numérique (c'est à dire si on a trouvé une correspondance) If IsNumeric(ctr) Then '* On va chercher le nom dans la colonne E et on l'affecte au label (fonction INDEX) Label1.Caption = Application.Index(Sheets("BDD").Columns(5), ctr) End If End If End Sub
Daniel "SylVBA" a écrit dans le message de news:
Merci daniel,
oui les codes sont sous forme de nombres.
Peux tu m'expliquer le code, j'ai du mal à comprendre le pourquoi du comment ?
Toujours un plaisir de trainer ici
bises
Syl VBA
Effectivement, CDbl...
'* la macro se déclenche à chaque ajout ou suppression de caractère
Private Sub TextBox1_Change()
'* Si il n'y a pas 5 caractères dans le textbox, on ne fait rien
If Len(TextBox1.Value) = 5 Then
'* on effectue un EQUIV de la valeur du textbox transformée en numérique
dans la colonne A de la feuille BDD
'* ctr représente la ligne du numéro de code
ctr = Application.Match(Cdbl(TextBox1.Value), Sheets("BDD").Columns(1), 0)
'* Si "ctr" est numérique (c'est à dire si on a trouvé une correspondance)
If IsNumeric(ctr) Then
'* On va chercher le nom dans la colonne E et on l'affecte au label
(fonction INDEX)
Label1.Caption = Application.Index(Sheets("BDD").Columns(5), ctr)
End If
End If
End Sub
Daniel
"SylVBA" <sylvie.laurent82@wanadoo.fr> a écrit dans le message de news:
7182d140-127b-4fc3-92bf-44f4781ec55e@f47g2000hsd.googlegroups.com...
Merci daniel,
oui les codes sont sous forme de nombres.
Peux tu m'expliquer le code, j'ai du mal à comprendre le pourquoi du
comment ?
'* la macro se déclenche à chaque ajout ou suppression de caractère Private Sub TextBox1_Change() '* Si il n'y a pas 5 caractères dans le textbox, on ne fait rien If Len(TextBox1.Value) = 5 Then '* on effectue un EQUIV de la valeur du textbox transformée en numérique dans la colonne A de la feuille BDD '* ctr représente la ligne du numéro de code ctr = Application.Match(Cdbl(TextBox1.Value), Sheets("BDD").Columns(1), 0) '* Si "ctr" est numérique (c'est à dire si on a trouvé une correspondance) If IsNumeric(ctr) Then '* On va chercher le nom dans la colonne E et on l'affecte au label (fonction INDEX) Label1.Caption = Application.Index(Sheets("BDD").Columns(5), ctr) End If End If End Sub
Daniel "SylVBA" a écrit dans le message de news:
Merci daniel,
oui les codes sont sous forme de nombres.
Peux tu m'expliquer le code, j'ai du mal à comprendre le pourquoi du comment ?
Toujours un plaisir de trainer ici
bises
Syl VBA
SylVBA
Bonjour Daniel.C
Merci à toi pour cette explication détaillée, les autres vont certainement en profiter pleinement !
Je te remercie pour ce temps passé à éduquer mon "VBA knowledge"
je vais maintenant mettre en pratique !!
A bientôt à vous les contributeurs !
Syl VBA
Bonjour Daniel.C
Merci à toi pour cette explication détaillée, les autres vont
certainement en profiter pleinement !
Je te remercie pour ce temps passé à éduquer mon "VBA knowledge"