Combiner find et offset

Gipsy -  
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.

6 réponses

  1. ThauTheme Messages postés 1564 Statut Membre 160
     
    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

    1
  2. Gipsy
     
    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.
    0
  3. ThauTheme Messages postés 1564 Statut Membre 160
     
    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...
    0
    1. Gipsy
       
      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
      0
  4. ThauTheme Messages postés 1564 Statut Membre 160
     
    La foule en délire : Le fichier ! Le fichier !... Voir par exemple https://www.cjoint.com/
    0
    1. Gipsy
       
      Effectivement, cela sera plus parlant
      https://www.cjoint.com/c/HJln4SV4b7J
      0
    2. Gipsy
       
      bah j'ai mis le fichier et je le remets : https://www.cjoint.com/c/HJln4SV4b7J
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. ThauTheme Messages postés 1564 Statut Membre 160
     
    T'es gentil mais ça se trouve où ?
    0
    1. Gipsy
       
      https://www.cjoint.com/c/HJln4SV4b7J
      0
  7. ThauTheme Messages postés 1564 Statut Membre 160
     
    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...
    0