Bornes adresses de cellules en Vba Excel 2007

Résolu
MarcosB Messages postés 2 Statut Membre -  
MarcosB Messages postés 2 Statut Membre -
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. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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
  2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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
  3. MarcosB Messages postés 2 Statut Membre
     
    Nickel merci :)
    0