Retourner coordonnées cellule vba

Résolu
Sam -  
 Sam -
Bonjour,

Je voudrais connaitre une commande vba pour retourner les coordonnées d'une cellule.
Sur mon tableur, j'ai une cellule contenant la valeur "pain", je voudrais obtenir ses coordonnées sans avoir à la sélectionner manuellement. Je voudrais qu'Excel la cherche lui-même et me fournisse ses coordonnées.

Merci d'avance

11 réponses

  1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonsoir,

    En supposant qu'elle est en colonnes B:D :
    Dim c As Range
    Set c = [B:D].Find("pain", LookIn:=xlValues)
    référence = c.Address
    lig = c.Row
    col = c.Column

    eric
    0
  2. Sam
     
    merci, autre question: comment est-ce que je peux sélectionner toutes les cellule entre "pain" et "viande" en suite à la procédure ci-dessus? (ça veut dire qu'au début je ne connais pas les coordonnées des 2 cellules, je sais juste qu'elles sont dans la même colonne)
    0
  3. Sam
     
    Il y a encore un problème, si j'ai une cellule "pain perdue" avant la cellule "pain", la commande c-dessus me fournit les coordonnées de "pain perdue" car il est placé avant dans la colonne du tableur.
    Comment parer cela?
    0
  4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    re,

    vite fait avant le dodo alors :
    Dim c1 As Range, c2 As Range
    Set c1 = [B:B].Find("pain", LookIn:=xlValues, LookAt:=xlWhole)
    Set c2 = [B:B].Find("viande", LookIn:=xlValues, LookAt:=xlWhole)
    Range(c1, c2).Select

    eric
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Sam
     
    Ok merci, par contre je voudrais que les cellules "pain" et "vande" ne soient pas inclus dans la sélection, comment faire?

    De plus, je voudrais copier cette sélection dans une colonne d'un autre classeur, par exemple la colonne E à partir du rang E3.

    Je patienterai jusqu'à demain pour les réponses, merci beaucoup en tout cas
    0
  7. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    Pourquoi ne pas demander directement ce que tu veux ???
    Dim c1 As Range, c2 As Range
    Set c1 = [B:B].Find("pain", LookIn:=xlValues, LookAt:=xlWhole)
    Set c2 = [B:B].Find("viande", LookIn:=xlValues, LookAt:=xlWhole)
    Range(c1, c2).Offset(1, 0).Resize(c2.Row - c1.Row - 1, 1).Copy Destination:=Workbooks("Classeur2").Sheets("Feuil1").[E3]
    

    eric
    0
  8. Sam
     
    J'ai un problème de compilation avec "Destination:=", pourquoi?
    0
  9. Sam
     
    J'ai réussi par contre, maintenant il me dit "l'indice n'appartient pas à la sélection"
    0
  10. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    J'ai supposé que les chaines existaient toujours vu que tu ne précisais rien.
    Ca marchait bien sur mon classeur de test, je ne sais pas ce que tu as fait...
    "l'indice n'appartient pas à la sélection"
    pareil, je ne suis pas devant ton écran, il faut être plus précis. Quelle ligne ????

    Contrôles que les chaines existent bien (sans espace en trop par exemple)

    eric
    0
  11. Sam
     
    C'est bon j'ai réussi, une erreur d'espace.
    Par contre, j'ai essayé d'automatiser le concept sur plusieurs feuilles et là ça ne marche pas comme je veux. Je voudrais extraire à chaque fois les cellules en questions (sachant que d'une feuille à l'autre il n'y a pas le même nombre de cellules entre "pain" et "viande"), et les mettre les unes à la suite des autres dans une colonne d'un autre classeur. Pour l'instant, ça ne met pas toutes les cellules et l'ordre est bizarre.
    Voici mon code :

    Set Wbk1 = ThisWorkbook
    Set Wbk2 = Workbooks("classeur2.xls")
    Dim c As Range
    Dim d As Range
    ws_count = ActiveWorkbook.Worksheets.Count

    For I = 7 To ws_count
    Wbk1.Worksheets(I).Activate
    Set c = [B:B].Find("pain", LookIn:=xlValues, Lookat:=xlWhole)
    Set d = [B:B].Find("viande", LookIn:=xlValues, Lookat:=xlWhole)
    Wbk1.Worksheets(I).Range(c, d).Offset(2, 0).Resize(d.Row - c.Row - 3, 1).Copy Destination:=Workbooks("classeur2.xls").Sheets("Structure").Cells(3 + cells_count, 8)
    cells_count = Wbk1.Worksheets(I).Range(c, d).Offset(2, 0).Resize(d.Row - c.Row - 3, 1).Count
    Next I

    Merci d'avance

    PS: je ne sais pas si ça influe mais toute les cellules n'ont pas la même taille.
    0
  12. Sam
     
    J'ai créer un nouveau topic plus adapter à mon nouveau problème. Celui-ci peut être considéré comme résolu.
    Merci encore
    0