Vba excel, problème avec une boucle pour une list

cs_lilith1928 Messages postés 15 Date d'inscription jeudi 3 mars 2005 Statut Membre Dernière intervention 11 mai 2005 - 28 avril 2005 à 19:35
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 - 3 mai 2005 à 01:55
un petit soucis avec mon code, j'ai une userform avec une liste qui contient 3 noms(car en exemple),et j'ai plusieurs boutons. j'ai une base de données en excel, avec trois colonnes.
je veux qu'a chaque fois que je cliques sur un nom de ma liste, la boucle recherche la bonne définition que je lui ai attribué dans ma base de données. mais je n'arrive pas a integrer ma boucle car a chaque fois que je cliques sur n'importe quel nom, cela me met le toujours la meme définition voila mon code

Option Explicit
Dim machaine As String
Dim maplage As Range
Dim macellule As Range
Dim paranoia As String
Dim schizo As String
Dim troubles As String
Dim I As Integer


Private Sub cmddescription_Click()


For I = 0 To 3
lstmaladies.ListIndex


Next I


Set maplage = Range("paranoia")
Set macellule = maplage.Find("Paranoia")
If Not macellule Is Nothing Then
txttexte.Text = Range("B2").Value 'met la définition de paranoia dans la textbox
Else
MsgBox "votre recherche n'a pas aboutie"
End If


Set maplage = Range("troubles")
Set macellule = maplage.Find("Troubles bipolaire")
If Not macellule Is Nothing Then
txttexte.Text = Range("B3").Value 'met la définition des troubles bipolaires dans la textbox
Else
MsgBox "votre recherche n'a pas aboutie"
End If


Set maplage = Range("schizo")
Set macellule = maplage.Find("Schizophrénie")
If Not macellule Is Nothing Then
txttexte.Text = Range("B4").Value 'met la définition de schizophrénie dans la textbox
Else
MsgBox "votre recherche n'a pas aboutie"
End If



End Sub

vous pouvez m'aider??? a moins qu'il y ait plus facile que mon code.... Merci

5 réponses

valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
29 avril 2005 à 02:26
Lut,
Faut d'autres explications ça n'a pas l'aire trés dur
Donnes des explications claires du style "Quand je clique sur lstmaladie je veux que txttexte =...."
D'autres part pour toi c'est bien de nommer tes cellules mais pour nous ......
donc les réfèrence seraient les bienvenues.
de plus quand tu codes le .Find il est trés recommandé de donner tous les paramètres
What: ; LookIn ; LookAt ..... sont gardé en mèmoire et cela peu fausser les recherches.

Option Explicit
Dim machaine As String
Dim maplage As Range
Dim macellule As Range
Dim paranoia As String
Dim schizo As String
Dim troubles As String
Dim I As Integer
' C'est quoi cmddescription
Private Sub cmddescription_Click()
For I = 0 To 3
' et ça ? c'est quoi lstmaladies
lstmaladies.ListIndex


Next I
' Pourquoi 3 fois txttexte ?
Set maplage = Range("paranoia")
Set macellule = maplage.Find("Paranoia")
If Not macellule Is Nothing Then
txttexte.Text = Range("B2").Value 'met la définition de paranoia dans la textbox
Else
MsgBox "votre recherche n'a pas aboutie"
End If


Set maplage = Range("troubles")
Set macellule = maplage.Find("Troubles bipolaire")
If Not macellule Is Nothing Then
txttexte.Text = Range("B3").Value 'met la définition des troubles bipolaires dans la textbox
Else
MsgBox "votre recherche n'a pas aboutie"
End If


Set maplage = Range("schizo")
Set macellule = maplage.Find("Schizophrénie")
If Not macellule Is Nothing Then
txttexte.Text = Range("B4").Value 'met la définition de schizophrénie dans la textbox
Else
MsgBox "votre recherche n'a pas aboutie"
End If

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
cs_lilith1928 Messages postés 15 Date d'inscription jeudi 3 mars 2005 Statut Membre Dernière intervention 11 mai 2005
29 avril 2005 à 19:02
oui je suis désolée je suis u peu brouillon. Voyon cmddescription c mon bouton de commande qui me permets de rechercher dans ma base excel la description de la maladie sélectionnée. Lstmaladies est ma liste de maladies, pour le moment j'en ai trois (pour essai) schizophrénie, troubles bipolaires et paranoia.En fait je choisi par exemple paranoia ensuite je clique sur description et cela doit recehrcher dans ma base la description de paranoia (ici dans B2) et ensuite mettre cette description trouvée dans une textbox (nommée txttexte)
Pour l'histoire des txttexte ben c'était pour essayer car j'ai vu que qd je mets cette formule une fois ça me récupère bien la description, or quand j'ajoute les deux autres ça ne marche pas.. ça c'est parce que j'ai encore du mal a faire un code et donc j'ai été maladroite sur cela... En fait il me faut une boucle je crois For...Next....il me semble après je pense que ça devrait marcher. Pour le code .find on me l'a montré ainsi sans les autres What: ; LookIn ; LookAt ..... J'espère que mes renseignements te conviendront.Merci de prendre le temps de m'aider.

Cordialement Lilith
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
29 avril 2005 à 21:07
lut,
Option Explicit
' On va partir sur un exemple tout simple
' Il te faut un UserForm "UserForm1"


' Une ListBox "ListBox1"


' Un Label "Label1"


' Un TextBox "TextBox


' Et 2 boutons de commande CommanButton1 et 2


' On va définir notre base de donnée


' Dans un premier temps la listbox se charge


' et tu peux faire une recherche dans la textbox


' C'est juste une ébauche pour montrer le fonctionnement


Dim MaBase As Range




Private Sub CommandButton2_Click()


Dim Cell As Range




For Each Cell In Range( "Base" )


If UCase (NotAccents(Cell.Value)) Like "*" & UCase (NotAccents(TextBox1.Text)) & "*" Then


ListBox1.Clear: ListBox1.AddItem Cell.Value


Exit For


End If


Next


End Sub




Private Sub ListBox1_Click()


' Si clic sur la listBox


' Rechercher le mot clé et renvoyer la définition


' Like permet de trouver un mot ou une partie d'un mot


Dim Cell As Range




For Each Cell In Range( "Base" )


If UCase (NotAccents(Cell.Value)) Like "*" & UCase (NotAccents(ListBox1.Text)) & "*" Then


Label1.Caption = Cell.Offset( 0 , 1 ).Value


Exit For


End If


Next


End Sub




Private Sub UserForm_Activate()


' Définition de ma plage


Set MaBase = [B1:B50]


MaBase.Name = "Base"


' Mise en place des controles


With UserForm1


.Height 326 : .Width 486 : .StartUpPosition = 1


End With




With Label1


.Top 6 : .Height 150 : .Left = 192 : .Width = 282 :


.BorderStyle fmBorderStyleSingle: .Caption "Pas d'infos"


End With




With TextBox1


.Top 162 : .Left 192 : .Width = 282 : .Height = 24


End With




With ListBox1


.Left 6 : .Top 6 : .Height = 294 : .Width = 150


End With


With CommandButton1


.Top 228 : .Left 288 : .Width = 84 : .Height = 30 : .Caption = "Quitter"


End With


With CommandButton2


.Top 228 : .Left 192 : .Width = 84 : .Height = 30 : .Caption = "Rechercher"


End With


' On rempli la listBox


' Je vais au plus simple elle comprends aussi les lignes vides


ListBox1.List = Range( "Base" ).Value


End Sub




Private Sub CommandButton1_Click()


Unload Me


End Sub




Function NotAccents(Chaine$) As String


' Cette fonction enleve les accent


' c'est plus pratique pour la recherche


Dim tmp$, i, x


tmp = Trim (Chaine)


For i = 1 To Len (tmp)


x = Asc ( Mid (tmp, i, 1 ))


Select Case x


Case 192 To 197 : x = "A"


Case 200 To 203 : x = "E"


Case 204 To 207 : x = "I"


Case 209 : x = "N"


Case 210 To 214 : x = "O"


Case 217 To 220 : x = "U"


Case 221 : x = "Y"


Case 224 To 229 : x = "a"


Case 232 To 235 : x = "e"


Case 236 To 239 : x = "i"


Case 241 : x = "n"


Case 240 , 242 To 246 : x = "o"


Case 249 To 252 : x = "u"


Case 253 , 255 : x = "y"


Case Else: x = Chr (x)


End Select


NotAccents = NotAccents & x


Next


End Function

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
cs_lilith1928 Messages postés 15 Date d'inscription jeudi 3 mars 2005 Statut Membre Dernière intervention 11 mai 2005
2 mai 2005 à 23:42
Bonsoir,

Je suis venue te remercier pour ton code qui marche a merveille, ce dernier m'a permis de mieux comprendre le fonctionnement d'une boucle!Il m'a aussi permis de développer d'autres idées qui elles aussi marchent très bien grace a toi. Encore merci d'avoir pris un peu de ton temps pour m'avoir aider.Si tu veux quand j'aurais tout fini je t'enverrais ce que j'ai fait (comme tu veux).
Bonne fin de soirée

Cordialement lilith
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
3 mai 2005 à 01:55
Je suis toujours preneur de nouvelle idées ... donc d'accord pour ta proposition

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
Rejoignez-nous