VBA : Probleme avec un Find
Bonjour,
J'ai un soucis dans le code :
Private Sub CommandButton1_Click()
Dim sc As String 'On declare la variable sc(saisi combo) en tant que texte
Dim i As Range 'On declare la variable i en tant que plage de cellule
Dim l As Integer '"" l en tant qu'entier
Dim c As Integer '"" c (colonne)""
Dim ibpu As Range
Dim ibpu2 As Range
Dim cbpu As Integer
Dim lbpu As Integer
sc = ComboBox1.Value 'sc=saisie combobox
Set i = Sheets("CODE").Range("A1:IV1").Find(sc, , xlValues, xlWhole, , , False) 'i=recherche de la cellule contenant sc dans la feuille code
[color=#FF0000]Set ibpu = Sheets("bpu").Range("D1:D60").Find(sc, , xlValues, xlPart, , , False)[/color]
MsgBox i
[color=#FF0000]MsgBox ibpu[/color]
End SubPour info j'ai supprimer des partie du fichier que je joint car il contient des données "confidentielles".
Donc tout se passe dans l'USF 3,
En gros je veux demander à la validation que ma saisie combobox sois recherche sur la feuille "code" pour récupérer la colonne et ajouter une saisie de mon formulaire à la suite (Donc ça sa marche j'ai supprimer la suite du code qui marche car pas intéressante ici).
Et du coup je veux qu'il en sois de même dans la feuille "bpu" sauf que ma variable "ibpu" ne récupère pas l'info. J'ai mis en place les 2 msgbox pour voir le contenu des variables de mes find, la "i" affiche bien se que je cherche mais "ibpu" me renvoie une erreur 91 et je n'arrive pas à la résoudre ... Ailleurs je ne trouve pas la syntaxe pour afficher mes 2 variable dans la même msgbox ...
Bref je fais du VBA en "autodidacte" pour mon travaille, j'écume souvent les forums et celui ci en particulier qui ma beaucoup aider dans la création de mon fichier. Donc je fais appelle a vous pour un petit coup de main et si j'avais vous avez des conseils pour améliorer ma façon de coder je suis preneur.
Bonsoir et bienvenu(e)
Dans ton code tu utilises ibpu pour la recherche : Set ibpu = ....
Ensuite tu veux afficher ibpu2 : MsgBox ibpu2
Erreur de frappe
Mais dans la feuille "BPU" en D1:D60 il n'y aucune donnée de la Combobox
Il faut faut rechercher sur une partie : Il faut enlever le chiffre et le - (tiret)
Set ibpu = Sheets("bpu").Range("D1:D60").Find(Mid(sc, 3), , xlValues, xlPart, , , False)Ainsi ibpu te retournera une valeur
Thib38 a écrit :Ailleurs je ne trouve pas la syntaxe pour afficher mes 2 variable dans la même msgbox ...
A tester
MsgBox "i : " & i & vbCr & "ibpu : " & ibpuSuper !
Merci Banzai ça marche au poil.
Banzai64 a écrit :Il faut faut rechercher sur une partie : Il faut enlever le chiffre et le - (tiret)
Je pensais que dans la fonction Find le "xlpart" permettait de chercher une partie de la saisie mais je viens de comprendre ce que j'ai mal interpréter.
Si je comprend bien, dans ma combobox j'ai la donner 1-Blabla je ne pourrais pas trouver une cellules avec "blabla" par contre l'inverse marche (Combobox = Blabla, je peux trouver la cellule 1-Blabla) ?
Si tu sais me valider ça histoire que je garde de bonne base !
Après je reviens sur la formule qui marche :
Find(Mid(sc, 3), , xlValues, xlPart, , , False)Alors :
Le FIND prend comme valeur de recherche (Mid(sc,3). Si je comprend bien le mid va prendre ma variable SC et faire une recherche à partir du 3ème caractère (1-blabla = labla) ?
Voila je voudrais être sur d'avoir bien compris.
En tout cas merci, tu m'as enlevé une épine du pied.
Bonne journée.
Bonjour
Thib38 a écrit :Si je comprend bien, dans ma combobox j'ai la donner 1-Blabla je ne pourrais pas trouver une cellules avec "blabla" par contre l'inverse marche (Combobox = Blabla, je peux trouver la cellule 1-Blabla) ?
Exact
Thib38 a écrit :Si je comprend bien le mid va prendre ma variable SC et faire une recherche à partir du 3ème caractère (1-blabla = labla) ?
La recherche se fera avec blabla
Le Mid va prendre une partie de ta variable sc, mais c'est le Find qui va faire la recherche avec ce morceau de la variable
Désolé mais je ne sais pas trop expliquer
Merci pour l'aide
Bonne journée !