VBA - Adresse d'une cellule / Concatener / suppression doublons

Fermé
JulieD44? - 23 juil. 2014 à 09:00
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 29 juil. 2014 à 11:38
Bonjour à tous !

Je rencontre quelques difficultés à coder l'action suivante : j'aimerais, pour chaque doublon trouvé en colonne B concaténer les valeurs de la colonne C pour pouvoir ensuite supprimer la ligne du doublon qui est devenue inutile à mon travail.
Pour réussir à expliquer simplement mon problème, je vais vous donner un exemple.

à partir de cette base de données :
Colonne A Colonne B Colonne C
1 a
2 b
3 c
4 d
5 e
5 f
6 g



J'aimerais obtenir ça :
Colonne A Colonne B Colonne C
1 a
2 b
3 c
4 d
5 e, f
6 g

Voici le code que j'ai fait :
Sub supprimeDoublons()

Range("B2").Select
'Sélectionne la cellule indiquée

ActiveCell.CurrentRegion.Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=xlYes
'Trie le tableau sur cette celule

donnee1 = ActiveCell
'mémorise le contenu de la cellule en cours et l'affecte à donnee1

ActiveCell.Offset(1, 0).Select
'descend d 'une ligne

While ActiveCell <> ""
'tant que la cellule n'est pas vide

If ActiveCell = donnee1 Then
'vérifie si le contenu de la cellule en cours est égal à donnee1


Dim a, b As String
Cel1 = Range("B2:B10").Find(ActiveCell, lookat:=xlWhole)
Cel2 = Range("B2:B10").Find(donnee1, lookat:=xlWhole)
' Trouver l'adresse de donnee1 et activecell.

b = Cells(Cel1.Row, 3).Value
a = Cells(Cel2.Row, 3).Value
' pb : objet requis pour b et a. Cell.Row non reconnu par le programme pour définir la ligne

'deux solutions possibles
c = a & Chr(10) & b
MsgBox c

'valable uniquement si a et b ne sont pas des chiffres
Cells(Cel1.Row, 3).Value = c

ActiveCell.EntireRow.Delete
'supprime la ligne entière

ActiveCell.Offset(-1, 0).Select
'remonte d 'une ligne

donnee1 = ActiveCell
'mémorise à nouveau le contenu de la cellule
ActiveCell.Offset(1, 0).Select
'descend d 'une ligne
Else
donnee1 = ActiveCell
' mémorise le contenu de la cellule en cours de la ligne suivante et l'affecte à donnee1
ActiveCell.Offset(1, 0).Select
'descend d 'une ligne
End If
' fin de la vérification
Wend
'fin de la boucle (on répète les instructions sur fond rose tant que la cellule en cours d'examen contient quelque chose). Sinon, le programme s'arrête
End Sub

Le problème réside ici :
b = Cells(Cel1.Row, 3).Value
a = Cells(Cel2.Row, 3).Value
' pb : objet requis pour b et a. Cell.Row non reconnu par le programme pour définir la ligne

La référence à la cellule Cell1.Row ou Cel2.Row n'est pas reconnue par VBA.


Auriez-vous une solution miracle à mon problème ??
A voir également:

2 réponses

Il y a eu un pb dans la mise en page.
Voici les tableaux :

A B C
.. 1 a
.. 2 b
.. 3 c
.. 4 d
.. 5 e
.. 5 f
.. 6 g
J'aimerais obtenir ça :
A B C
.. 1 a
.. 2 b
.. 3 c
.. 4 d
.. 5 e, f
.. 6 g
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
29 juil. 2014 à 11:38
AUCUNE REACTION A MA PROPOSITION DE CODE EMISE LE 23 JUILLET

MESSAGE SUPPRIME

-1