Combiner find et offset
Gipsy
-
ThauTheme Messages postés 1564 Statut Membre -
ThauTheme Messages postés 1564 Statut Membre -
Bonjour,
J'ai un peu le même problème.
Je voudrais aller chercher une valeur (combobox18, je précise que l'utilisateur ne PEUT PAS modifier combobox18, donc la valeur est forcément exacte) dans plusieurs colonnes différentes dans un classeur A (BDD Clients) et une fois la valeur trouvée, renvoyer la valeur de la colonne à sa droite dans une cellule d'un classeur B (BL).
Voici mon code (il est partiel) :
With Workbooks("BL.xlsx").Sheets("BL")
Dim Trouve As Range, PlageDeRecherche As Range
Dim Valeur_Cherchee As String, AdresseTrouvee As String
Dim tel As String, mail As String
Valeur_Cherchee = ComboBox18.Value
PlageDeRecherche = Workbooks("BDD Clients.xls").Sheets("BD").Range("B2:X65536")
Trouve = PlageDeRecherche.Cells.Find(what:=Valeur_Cherchee, LookAt:=xlWhole)
tel = Range(Trouve.Address).Offset(, 1).Value
mail = Range(Trouve.Address).Offset(, 2).Value
.Range("D11") = tel 'tel du contact
.Range("D12") = mail 'mail du contact
End With
J'ai beau chercher sur les divers forums avec offset et find, je ne trouve rien dans mon cas.
J'ai un peu le même problème.
Je voudrais aller chercher une valeur (combobox18, je précise que l'utilisateur ne PEUT PAS modifier combobox18, donc la valeur est forcément exacte) dans plusieurs colonnes différentes dans un classeur A (BDD Clients) et une fois la valeur trouvée, renvoyer la valeur de la colonne à sa droite dans une cellule d'un classeur B (BL).
Voici mon code (il est partiel) :
With Workbooks("BL.xlsx").Sheets("BL")
Dim Trouve As Range, PlageDeRecherche As Range
Dim Valeur_Cherchee As String, AdresseTrouvee As String
Dim tel As String, mail As String
Valeur_Cherchee = ComboBox18.Value
PlageDeRecherche = Workbooks("BDD Clients.xls").Sheets("BD").Range("B2:X65536")
Trouve = PlageDeRecherche.Cells.Find(what:=Valeur_Cherchee, LookAt:=xlWhole)
tel = Range(Trouve.Address).Offset(, 1).Value
mail = Range(Trouve.Address).Offset(, 2).Value
.Range("D11") = tel 'tel du contact
.Range("D12") = mail 'mail du contact
End With
J'ai beau chercher sur les divers forums avec offset et find, je ne trouve rien dans mon cas.
6 réponses
-
Bonjour Gipsy, bonjour le forum,
Puisque tu as déclaré la variable Trouve de type Range le code correct serait :Dim Trouve As Range, PlageDeRecherche As Range Dim Valeur_Cherchee As String Dim tel As String, mail As String Valeur_Cherchee = ComboBox18.Value PlageDeRecherche = Workbooks("BDD Clients.xls").Sheets("BD").Range("B2:X65536") Trouve = PlageDeRecherche.Find(what:=Valeur_Cherchee, LookAt:=xlWhole) tel = Trouve.Offset(, 1).Value mail = Trouve.Offset(, 2).Value With Workbooks("BL.xlsx").Sheets("BL") .Range("D11") = tel 'tel du contact .Range("D12") = mail 'mail du contact End With
-
Bonjour ThauTheme,
Je te remercie pour ta réactivité.
J'ai remplacé mon précédent code par le tien et je n'ai toujours rien d'affiché. Le fichier ne plante pas.
Penses-tu que l'erreur provienne d'ailleurs ?
Merci encore pour ton aide,
Gipsy. -
Re,
Ton code était fonctionnel en effet mais il te faut le faire tourner pas à pas (avec la touche [F8] ) et mettre des espions sur les variables tel et mail. Si ces cellules sont vide le code fonctionne parfaitement mais D11 et D12 resteront vides...
-
N'y arrive pas non plus, quand je fais F8, il me renvoie sur mon uerform_initialize alors que ce code se trouve sur combobox1_change car ma combobox18 dépend de ce qui est inscrit dans la combobox1.
J'ai essayé une autre méthode par index, mais pareil, ça tourne mais c'est vide...
.Range("D11") = Application.WorksheetFunction.Index(ComboBox18.Value, 0, 1)
Range D11 est la cellule dans laquelle je veux inscrire la valeur de la colonne à droite de la valeur trouvée
Merci pour ton aide,
Gipsy
-
-
La foule en délire : Le fichier ! Le fichier !... Voir par exemple https://www.cjoint.com/
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
-
Le fichier je l'ai ouvert mais j'ai fait une recherche dans le code et je n'ai pas trouvé ce que tu as mis dans ton premier post.
Mais si tu ne veux pas perdre de temps à m'expliquer où se trouve le code je ne vais pas, non plus perdre mon temps à t'aider...