Retourner coordonnées cellule vba

Résolu
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. Contributeur
    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
    1. 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
      1. 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
        1. Contributeur
          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
          1. 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
            1. Contributeur
              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
              1. J'ai un problème de compilation avec "Destination:=", pourquoi?
                0
                1. J'ai réussi par contre, maintenant il me dit "l'indice n'appartient pas à la sélection"
                  0
                  1. Contributeur
                    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
                    1. 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
                      1. 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