bonjour à tous,
je me permet de reposer mon problème pour le lequel je n'ai pas vraiment
obtenu de solution mais certainement que je me suis mal expliqué. Alors
voilà l'exemple que je voudrais obtenir.
. Mon exemple
sur une feuille de calcul j'ai ceci
en A1: alain en B1 : bleu
en A2: jana en B2 : vert en C2: rouge
en A3: Ines en B3 : rouge en C3: bleu en D3 vert
en A4: alain en B4: bleu en C4: rouge
en A5: ines en B5: violet
en a6 alain en b6 : violet en C6 rouge
en A7: jana en b7 : vert
passage de la macro (si possible) je voudrais obtenir
en A1: alain en B1: bleu en C1: rouge en D1: violet
en A2: jana en B2 : vert en C2: rouge
en A3: ines en B3 : rouge en C3: bleu en D3 vert en E3 violet
bien entendu seule la colonne des noms reste inchangée (col A)
en fait chaque fois que l'utilisateur rentre un nom et une donnée, la macro
doit rechercher déjà si ce nom existe auparavant, lire la ou les données qui
y sont et ajouter la nouvelle donnée si elle n'existe pas déjà, dans la
première colonne vide qu'elle rencontre au bout de la ligne, ou ne pas la
prendre en compte si elle
existe auparavant, et dans ces deux cas une fois le travail fait supprimer
cette nouvelle ligne afin qu'il n'existe pas de doublons sur le nom, et s'il
s'agit d'une donnée nouvelle (nouveau nom) la macro ne fait rien du tout
J'espère m'avoir fait comprendre mais vraiment je bute la dessus et arrive à
ne plus rien y comprendre
je travaille sur une ancienne solution (environ 2ans) plus simple que
m'avait donné Frédéric Sigonneau (que je remercie encore et à qui je fais
chapeau bas pour son site) et qui était la suivante:
Sub Classement()
Dim NextCell As Range
Dim CurrentCell As Range
Dim B As Integer
With Worksheets(ActiveSheet.Name)
.Range("A1").Sort _
Key1:=Worksheets(ActiveSheet.Name).Range("A1")
Set CurrentCell = Worksheets(ActiveSheet.Name).Range("A1")
Do While Not IsEmpty(CurrentCell)
Set NextCell = CurrentCell.Offset(1, 0)
If CurrentCell.Value = NextCell.Value Then
CurrentCell.Offset(, CurrentCell.End(xlToRight).Column) = _
NextCell.Offset(0, 1)
NextCell.EntireRow.Delete
Set NextCell = CurrentCell
Else
Set CurrentCell = NextCell
If CurrentCell Is Nothing Then Exit Sub
End If
Loop
End With
MsgBox ("Voilà, c'est fait")
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Ellimac
Bonjour Alain,
La macro que je t'ai transmise fonctionne à la condition que ta 1ère colonne soit triée au préalable ou rajoute l'instruction suivante en début de macro :
-----Message d'origine----- bonjour à tous, je me permet de reposer mon problème pour le lequel je n'ai pas vraiment
obtenu de solution mais certainement que je me suis mal expliqué. Alors
voilà l'exemple que je voudrais obtenir.
.. Mon exemple sur une feuille de calcul j'ai ceci en A1: alain en B1 : bleu en A2: jana en B2 : vert en C2: rouge en A3: Ines en B3 : rouge en C3: bleu en D3 vert en A4: alain en B4: bleu en C4: rouge en A5: ines en B5: violet en a6 alain en b6 : violet en C6 rouge en A7: jana en b7 : vert
passage de la macro (si possible) je voudrais obtenir en A1: alain en B1: bleu en C1: rouge en D1: violet en A2: jana en B2 : vert en C2: rouge en A3: ines en B3 : rouge en C3: bleu en D3 vert en E3 violet
bien entendu seule la colonne des noms reste inchangée (col A)
en fait chaque fois que l'utilisateur rentre un nom et une donnée, la macro
doit rechercher déjà si ce nom existe auparavant, lire la ou les données qui
y sont et ajouter la nouvelle donnée si elle n'existe pas déjà, dans la
première colonne vide qu'elle rencontre au bout de la ligne, ou ne pas la
prendre en compte si elle existe auparavant, et dans ces deux cas une fois le travail fait supprimer
cette nouvelle ligne afin qu'il n'existe pas de doublons sur le nom, et s'il
s'agit d'une donnée nouvelle (nouveau nom) la macro ne fait rien du tout
J'espère m'avoir fait comprendre mais vraiment je bute la dessus et arrive à
ne plus rien y comprendre
je travaille sur une ancienne solution (environ 2ans) plus simple que
m'avait donné Frédéric Sigonneau (que je remercie encore et à qui je fais
chapeau bas pour son site) et qui était la suivante:
Sub Classement()
Dim NextCell As Range Dim CurrentCell As Range Dim B As Integer
With Worksheets(ActiveSheet.Name) .Range("A1").Sort _ Key1:=Worksheets(ActiveSheet.Name).Range("A1") Set CurrentCell = Worksheets(ActiveSheet.Name).Range ("A1")
Do While Not IsEmpty(CurrentCell) Set NextCell = CurrentCell.Offset(1, 0) If CurrentCell.Value = NextCell.Value Then CurrentCell.Offset(, CurrentCell.End (xlToRight).Column) = _
NextCell.Offset(0, 1) NextCell.EntireRow.Delete Set NextCell = CurrentCell Else Set CurrentCell = NextCell If CurrentCell Is Nothing Then Exit Sub
End If Loop End With MsgBox ("Voilà, c'est fait") End Sub
merci d'avance pour votre attention et réponses
Alain ROUSSEL
.
Bonjour Alain,
La macro que je t'ai transmise fonctionne à la condition
que ta 1ère colonne soit triée au préalable ou rajoute
l'instruction suivante en début de macro :
-----Message d'origine-----
bonjour à tous,
je me permet de reposer mon problème pour le lequel je
n'ai pas vraiment
obtenu de solution mais certainement que je me suis mal
expliqué. Alors
voilà l'exemple que je voudrais obtenir.
.. Mon exemple
sur une feuille de calcul j'ai ceci
en A1: alain en B1 : bleu
en A2: jana en B2 : vert en C2: rouge
en A3: Ines en B3 : rouge en C3: bleu en D3 vert
en A4: alain en B4: bleu en C4: rouge
en A5: ines en B5: violet
en a6 alain en b6 : violet en C6 rouge
en A7: jana en b7 : vert
passage de la macro (si possible) je voudrais obtenir
en A1: alain en B1: bleu en C1: rouge en D1: violet
en A2: jana en B2 : vert en C2: rouge
en A3: ines en B3 : rouge en C3: bleu en D3 vert en
E3 violet
bien entendu seule la colonne des noms reste inchangée
(col A)
en fait chaque fois que l'utilisateur rentre un nom et
une donnée, la macro
doit rechercher déjà si ce nom existe auparavant, lire la
ou les données qui
y sont et ajouter la nouvelle donnée si elle n'existe pas
déjà, dans la
première colonne vide qu'elle rencontre au bout de la
ligne, ou ne pas la
prendre en compte si elle
existe auparavant, et dans ces deux cas une fois le
travail fait supprimer
cette nouvelle ligne afin qu'il n'existe pas de doublons
sur le nom, et s'il
s'agit d'une donnée nouvelle (nouveau nom) la macro ne
fait rien du tout
J'espère m'avoir fait comprendre mais vraiment je bute la
dessus et arrive à
ne plus rien y comprendre
je travaille sur une ancienne solution (environ 2ans)
plus simple que
m'avait donné Frédéric Sigonneau (que je remercie encore
et à qui je fais
chapeau bas pour son site) et qui était la suivante:
Sub Classement()
Dim NextCell As Range
Dim CurrentCell As Range
Dim B As Integer
With Worksheets(ActiveSheet.Name)
.Range("A1").Sort _
Key1:=Worksheets(ActiveSheet.Name).Range("A1")
Set CurrentCell = Worksheets(ActiveSheet.Name).Range
("A1")
Do While Not IsEmpty(CurrentCell)
Set NextCell = CurrentCell.Offset(1, 0)
If CurrentCell.Value = NextCell.Value Then
CurrentCell.Offset(, CurrentCell.End
(xlToRight).Column) = _
NextCell.Offset(0, 1)
NextCell.EntireRow.Delete
Set NextCell = CurrentCell
Else
Set CurrentCell = NextCell
If CurrentCell Is Nothing Then Exit Sub
End If
Loop
End With
MsgBox ("Voilà, c'est fait")
End Sub
La macro que je t'ai transmise fonctionne à la condition que ta 1ère colonne soit triée au préalable ou rajoute l'instruction suivante en début de macro :
-----Message d'origine----- bonjour à tous, je me permet de reposer mon problème pour le lequel je n'ai pas vraiment
obtenu de solution mais certainement que je me suis mal expliqué. Alors
voilà l'exemple que je voudrais obtenir.
.. Mon exemple sur une feuille de calcul j'ai ceci en A1: alain en B1 : bleu en A2: jana en B2 : vert en C2: rouge en A3: Ines en B3 : rouge en C3: bleu en D3 vert en A4: alain en B4: bleu en C4: rouge en A5: ines en B5: violet en a6 alain en b6 : violet en C6 rouge en A7: jana en b7 : vert
passage de la macro (si possible) je voudrais obtenir en A1: alain en B1: bleu en C1: rouge en D1: violet en A2: jana en B2 : vert en C2: rouge en A3: ines en B3 : rouge en C3: bleu en D3 vert en E3 violet
bien entendu seule la colonne des noms reste inchangée (col A)
en fait chaque fois que l'utilisateur rentre un nom et une donnée, la macro
doit rechercher déjà si ce nom existe auparavant, lire la ou les données qui
y sont et ajouter la nouvelle donnée si elle n'existe pas déjà, dans la
première colonne vide qu'elle rencontre au bout de la ligne, ou ne pas la
prendre en compte si elle existe auparavant, et dans ces deux cas une fois le travail fait supprimer
cette nouvelle ligne afin qu'il n'existe pas de doublons sur le nom, et s'il
s'agit d'une donnée nouvelle (nouveau nom) la macro ne fait rien du tout
J'espère m'avoir fait comprendre mais vraiment je bute la dessus et arrive à
ne plus rien y comprendre
je travaille sur une ancienne solution (environ 2ans) plus simple que
m'avait donné Frédéric Sigonneau (que je remercie encore et à qui je fais
chapeau bas pour son site) et qui était la suivante:
Sub Classement()
Dim NextCell As Range Dim CurrentCell As Range Dim B As Integer
With Worksheets(ActiveSheet.Name) .Range("A1").Sort _ Key1:=Worksheets(ActiveSheet.Name).Range("A1") Set CurrentCell = Worksheets(ActiveSheet.Name).Range ("A1")
Do While Not IsEmpty(CurrentCell) Set NextCell = CurrentCell.Offset(1, 0) If CurrentCell.Value = NextCell.Value Then CurrentCell.Offset(, CurrentCell.End (xlToRight).Column) = _
NextCell.Offset(0, 1) NextCell.EntireRow.Delete Set NextCell = CurrentCell Else Set CurrentCell = NextCell If CurrentCell Is Nothing Then Exit Sub
End If Loop End With MsgBox ("Voilà, c'est fait") End Sub