Bornes adresses de cellules en Vba Excel 2007 [Résolu/Fermé]

Signaler
Messages postés
2
Date d'inscription
lundi 12 mars 2012
Statut
Membre
Dernière intervention
12 mars 2012
-
Messages postés
2
Date d'inscription
lundi 12 mars 2012
Statut
Membre
Dernière intervention
12 mars 2012
-
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

Messages postés
12251
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2021
2 609
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
Messages postés
12251
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2021
2 609
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
Messages postés
2
Date d'inscription
lundi 12 mars 2012
Statut
Membre
Dernière intervention
12 mars 2012

Nickel merci :)