Bornes adresses de cellules en Vba Excel 2007

Résolu
Bonjour,

Je cherche une macro permettant :
- de trouver les bornes (n° de ligne du début et n° de ligne de fin) de lignes ayant une valeur en commun dans une colonne (données en feuille 1)
- de renseigner dans une feuille 2 un tableau avec les numéros de début et fin de lignes de chacun des groupes (=différents libellés dans la colonne nom de la feuille 1)

Si vous avez des pistes, je suis preneur.
Merci par avance

Exemple de données de la Feuille 1
colonne 1 | nom
-----------------------------
action 1 | albert
action 3 | albert
action 7 | joseph
action 4 | marcel
action 5 | marcel
action 6 | maurice
action 8 | nicolas

Exemple de données de la Feuille 2 (avec les adresses de début et de fin renseignées)
Nom | Début | Fin
-------------------------------
albert | 2 | 3
joseph | 4 | 4
marcel | 5 | 6
maurice | 7 | 7
nicolas | 8 | 8

3 réponses

  1. Modérateur
    Bonjour,
    Mis à part les doublons qui se suivent, y a t'il dans ta colonne d'autres doublons possibles?
    Exemple :

    colonne 1 | nom
    -----------------------------
    action 1 | albert
    action 3 | albert
    action 7 | joseph
    action 4 | marcel
    action 5 | marcel
    action 6 | maurice
    action 8 | nicolas
    action 9 | albert
    action10| joseph
    0
    1. Modérateur
      Re-
      En fait, on s'en fiche de savoir si tu as des doublons ou pas...
      Voici ton code VBA :
      Option Explicit  
      
      Sub Regroupe_Données()  
      Dim Tabl, i As Long, Cpt As Long  
      With Sheets("Feuil1")  
          Tabl = .Range("B2", .Range("B" & .Rows.Count).End(xlUp)) '*** on commence en B2!!!  
      End With  
      With Sheets("Feuil2")  
          i = LBound(Tabl)  
          Cpt = i  
          .Cells(Cpt, 1) = Tabl(i, 1)  
          'Ici on présume commencer le Tableau en ligne 2 (cf *** ci-dessus)  
          'donc le numéro de ligne = indice du tableau (i) + 1  
          'si les données débutent en ligne 1 remplacer i + 1 par i 
          .Cells(Cpt, 2) = i + 1  
          .Cells(Cpt, 3) = i + 1  
          For i = LBound(Tabl) + 1 To UBound(Tabl)  
              If Tabl(i, 1) = Tabl(i - 1, 1) Then  
                  .Cells(Cpt, 1) = Tabl(i, 1)  
                  .Cells(Cpt, 3) = i + 1  
              Else  
                  Cpt = Cpt + 1  
                  .Cells(Cpt, 1) = Tabl(i, 1)  
                  .Cells(Cpt, 2) = i + 1  
                  .Cells(Cpt, 3) = i + 1  
              End If  
          Next  
      End With  
      End Sub


      Cordialement,
      Franck P
      0