Copier une valeur selon condition sur une feuille l pour l'inscrire dans un TextBox

dmoluc

XLDnaute Occasionnel
Bonjour,
Je bataille depuis quelques temps avec mes très maigres connaissances pour récupérer les valeurs de deux cellules d'une feuille de calcul et les insérées dans des textBox d'un userform.

Code:
Dim LigneActive As Long
 Dim Pa As Long
 Dim Pe As Long

[COLOR="#FF0000"] 'Dans La TextBox8 j'ai une Valeur que je veux comparer aux cellule de la collonne "B", alor j'essais de faire une boucle j'usqu'à ce que la condition soit Vrait[/COLOR]

 Pa = Range("B" & Rows.Count).End(xlUp).Offset(0, 0)
While Pa <> TextBox8
Pa = Range("B" & Rows.Count).End(xlUp).Offset(0, 0)
If TextBox8 = Pa Then
[COLOR="#FF0000"]'Ensuite j'essais de me déplacer sur la ligne sélectionnée ver la collonne "D" afin de copier la valeur de la cellule D"" Vers l'UserForm dans la textBox13 [/COLOR]

LigneActive = Selection.Row
Load UserForm2
UserForm2.TextBox13.Value = Sheets("Feuil1").Cells(LigneActive, "D").Value
End If
Wend

[COLOR="#FF0000"]' Je recommence l'opération pour la deuxième TextBox[/COLOR]

Pe = Range("B" & Rows.Count).End(xlUp).Offset(0, 0)
While Pe <> TextBox7
Pe = Range("B" & Rows.Count).End(xlUp).Offset(0, 0)
If TextBox7 = Pe Then
LigneActive = Selection.Row
Load UserForm2
UserForm2.TextBox14.Value = Sheets("Feuil1").Cells(LigneActive, "D").Value
End If
Wend
Au mieux tout ce que j'arrive à faire c'est faire tourner la macro en boucle et tester la puissance de mon I7 et j'ai beau chercher sur le net, je ne trouve pas de syntaxe qui correspondent à ce que je veux faire.
Je joints le fichier avec mes codes de débutants
Merci par avance pour votre aide
 

Pièces jointes

  • Cana - Copie.zip
    109.4 KB · Affichages: 50

MichD

XLDnaute Impliqué
Re : Copier une valeur selon condition sur une feuille l pour l'inscrire dans un Text

Bonjour,

j'essais de faire une boucle j'usqu'à ce que la condition soit Vraie

Pourquoi ne pas utiliser la méthode "Find" ou "FindNext" (un exemple dans l'aide est donné)
Cela va augmenter l'efficacité et la rapidité d'exécution.

Si tu tiens à faire une boucle, quand tu compares un textbox à la valeur d'une cellule, la casse
est importante et tu dois t'assurer que le texte saisi dans le textbox est identique au texte saisi
dans la cellule pour pouvoir faire une comparaison avec le symbole "=". Habituellement on
peut neutraliser la casse par

if Ucase(Textbox1) = Ucase(Range("A1") then

Adapte le nom des objets et de la feuille de calcul selon ton projet.

VB:
Sub test()
Dim Rg As Range, Trouve As Range, Adr As String
With Worksheets("Feuil1")
    Set Rg = .Range("B1:B" & .Range("B65536").End(xlUp).Row)
End With

With Rg
    Set Trouve = .Find(What:=Me.Textbox1", LookIn:=xlValues, LookAt:=xlWhole, _
        SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)
        
    'Si la méthode "find" a trouvé
    If Not Trouve Is Nothing Then
        Adr = Trouve.Address
        Do
          'Trouve est la cellule qui contient l'expression recherchée
          'Que veux-tu faire... le code
          
           'Pour récupérer la valeur de la colonne D sur la même ligne
            Msgbox Trouve.Offset(,2).value
          
            'Pour continuer la recherche sur la plage
            'si plus d'une occurrence
            Set Trouve = .FindNext(Trouve)
        Loop Until Trouve.Address = Adr
    End If
End With
        
End Sub
 

dmoluc

XLDnaute Occasionnel
Re : Copier une valeur selon condition sur une feuille l pour l'inscrire dans un Text

Merci pour cette réponse rapide mais je n'arrive pas à incrémenter ma textbox8 avec la valeur de la colonne D :( et quand je veux faire tourner la macro pas à pas pour voir ce qui se passe, ça me lance l'userForm et je ne peux rien vérifier.
Enfin merci pour le coup de main car je ne connaissais pas la méthode find
 

MichD

XLDnaute Impliqué
Re : Copier une valeur selon condition sur une feuille l pour l'inscrire dans un Text

Tu peux mettre des points d'arrêts n'importe où dans le code.
(Un clic vis-à-vis la ligne de code sur la petite bordure à gauche du code)
Si tu ne sais pas faire, insère où tu veux cette ligne de code
Stop
la macro s'arrête et tu peux employer la touche F8 pour faire exécuter
ligne par ligne le reste du code.

La méthode "Find" a beaucoup de paramètres, tu devrais lire l'aide d'Excel...

Et au lieu d'utiliser un formulaire, copie la procédure dans un module standard
insère quelques mots en colonne B de la feuille "Feuil1" et observe comment
cette méthode travaille.
 

Discussions similaires

Réponses
6
Affichages
314
Réponses
2
Affichages
191

Statistiques des forums

Discussions
312 675
Messages
2 090 798
Membres
104 666
dernier inscrit
philobros1457