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

Le
SylVBA
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel.C
Le #5239611
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"
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
Le #5239541
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
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
Le #5239521
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
Le #5239511
ATTENTION, j'ai un dépassement de capacité à partir des codes de la
ligne 900 environ est ce normal ?

Merci

SYL VBA
SylVBA
Le #5239461
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
JB
Le #5239381
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
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


SylVBA
Le #5239361
Merci JB, c'est bien vu Cdbl

Bonne soirée et à bientôt!

Syl VBA
Daniel.C
Le #5239311
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"
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
Le #5238781
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
Publicité
Poster une réponse
Anonyme