Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Index / Equiv en VBa dans mon UF je suis plantée....

9 réponses
Avatar
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...

Vivement les vacances !!!!!

Merci d'avance de votre pr=E9cieuse aide

Syl VBA

9 réponses

Avatar
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


Avatar
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




Avatar
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
Avatar
SylVBA
ATTENTION, j'ai un dépassement de capacité à partir des codes de la
ligne 900 environ est ce normal ?

Merci

SYL VBA
Avatar
SylVBA
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
Avatar
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


Avatar
SylVBA
Merci JB, c'est bien vu Cdbl

Bonne soirée et à bientôt!

Syl VBA
Avatar
Daniel.C
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" 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
Avatar
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