Combiner find et offset
Gipsy
-
ThauTheme Messages postés 1442 Date d'inscription Statut Membre Dernière intervention -
ThauTheme Messages postés 1442 Date d'inscription Statut Membre Dernière intervention -
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.
A voir également:
- Combiner find et offset
- Find and mount - Télécharger - Récupération de données
- Combiner pdf - Guide
- Ava find - Télécharger - Divers Utilitaires
- Excel combiner deux cellules - Guide
- Find junk files - Télécharger - Nettoyage
6 réponses
Bonjour Gipsy, bonjour le forum,
Puisque tu as déclaré la variable Trouve de type Range le code correct serait :
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.
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...
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question