Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

USERFOME de débutant

J

julio

Guest
voila je reviens à la charge avec mon userform

voici le programme que je voudrais executer lorsque j'appuie sur mon bouton "executer"

Private Sub BTresultat_Click()

Dim i As Integer
i = 1

While Cells(i, 1).Value <> ""
If Cells(i, 1).Value = TextBox1.Value Then
TextBox2.Value = Cells(i, 4).Value
TextBox3.Value = Cells(i, 8).Value
End If
i = i + 1
Wend

End Sub

L'idée c'est que EXCEL recherche dans la colonne 1 le code jusqu'a ce qu'il tombe sur la bonne ligne. Une fois la bonne ligne trouvée (i=qq chose), il copie dans les textbox les valeur des cellules de la même ligne...
Je n'arrive pas a utiliser la fonction "rechercher" en faisant une macro enregistrée.

ça ressemble a ça :

Selection.find(What:="????".Value, After:=ActiveCell, LookIn:=xlFormulas, _
' LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
' MatchCase:=False).Activate

le "???" c'est parce que je sais pas quoi mettre.
En tout cas ça marche pas...


Qu'est ce qui ne va pas dans mon programme?
Je débute, j'apprend sur le tas, petit a petit...

Merci d'avance
 

Pièces jointes

  • userform.zip
    47.9 KB · Affichages: 18
  • userform.zip
    47.9 KB · Affichages: 14
  • userform.zip
    47.9 KB · Affichages: 14
@

@+Thierry

Guest
Bonsoir Julios, le Forum

Mis à part pour un message d'erreur pas possible ou un truc interressant, telle une belle photo d'une belle Variable Integer(ment nue) ((lol), ne poster pas ici le "photo" JPG de votre beau UserForm... Le fichier Zippé aurait pris mois de place et on aurait pu répondre en complétant/corrigeant/finissant le code....

Ta boucle devrait While "vraissemblablement marcher" bien que je préfere une boucle "For Each x in Plage"...... ou encore "For i = 1 to Plage.Count" ... mais en aplliquant comme ceci, While..... Wend devrait marcher : (Ucase pour éviter les différence de Casse)

Sub Recherche()
Dim i As Integer, Ligne As Integer
i = 1
While Cells(i, 1).Value <> ""
If UCase(Cells(i, 1)) = UCase(TextBox1) Then Ligne = i
i = i + 1
Wend
If Ligne <> 0 Then MsgBox Ligne
End Sub


Sinon la méthode "Find" s'écrit comme ceci en appliquant/adaptant l'aide VBA :

Sub FindLigneDeLitem()
Dim C As Range
Dim Ligne As Integer

With Worksheets("Feuil1").Range("a1:a600")
Set C = .Find(TextBox1, LookIn:=xlValues)
If Not C Is Nothing Then
firstAddress = C.Address
Do
Ligne = C.Row
Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address <> firstAddress
End If
End With

MsgBox Ligne
End Sub

Cependant ce genre de méthodes (les deux) te retourneront le numéro de ligne du dernier Item trouvé, si tu as des doublons tu ne le verras pas... Il faudrait intégrer un compteur...

Bonne nuit
@+Thierry
 
J

julio

Guest
Merci pour cette super réponse.
Bon effectivement, j'ai encore pas mal de choses a apprendre!!
Il y a plein de "fonctions" que je ne connaissais pas mais c'est bon, ça me fait connaitre autre chose que mes boucle while, for...
Sinon, pour la photo jpeg, c'est parceque je voulait pas envoyer le fichier excel qui est une base de donnée du travail...c'est "embêtant" de le faire sortir.

Allez, je retourne a mon fichier, entre 2 clients...Si je deviens pas kalif a la place du kalif!!!!

A++
 

Discussions similaires

Réponses
4
Affichages
357
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…