Aide macro excel pour fusionner doublons

  • Auteur de la discussion memed2009
  • Date de début

memed2009

Nouveau membre
suite à une requête sur access, j'obtiens un tableau qui croise des données de deux tables, néanmoins j'obtiens des doublons.Gràce à votre forum j'ai pu dans un premier temps effacer les lignes qui contenaient les colonnes "F" "G" et "H" toutes vides.

Par contre j'obtiens encore par exemple :

nom/prenom/ vente a/ vente b/vente c
dupont/ marie/ 2/
dupont/ marie/ / 5 / /
dupont/ marie/ / / 1 /

Pourrais avec une macro compiler ces données pour obtenir

nom/prenom/vente a/vente b/vente c/
dupont/marie/ 2 /5 /1

Merci d'avance pour votre aide.
 

zeb

Modérateur
Bonjour,

Relis ton manuel SQL à la page GROUP BY.
(La solution s'y cache ;) )
 

memed2009

Nouveau membre
Merci pour la rapidité de réponse je suis débutant en access mais je vais étudier la solution group BY, sinon juste au cas ou je poste ma macro même si elle doit etre horrible à voir lol merci encore

'Recherche de la dernière ligne de la colonne C
derli = Columns(3).Find("*", , , , , xlPrevious).Row
' boucle qui commence à la fin à cause des suppression de cellules
For i = derli To 2 Step -1
'Si la valeur de la cellule au dessus est égale à la valeur de la cellule (colonne C) alors
If Cells(i, 3) = Cells(i - 1, 3) Then
'on additionne les deux montants dans la cellule "F au-dessus"
Cells(i - 1, 6) = Cells(i - 1, 6) + Cells(i, 6)
Cells(i - 1, 7) = Cells(i - 1, 7) + Cells(i, 7)
Cells(i - 1, 8) = Cells(i - 1, 8) + Cells(i, 8)
'on supprime les cellules
Range(Cells(i, 1), Cells(i, 2), Cells(i, 3), Cells(i, 4), Cells(i, 5), Cells(i, 6), Cells(i, 7), Cells(i, 8)).Delete Shift:=xlUp
End If
Next
End Sub
 

zeb

Modérateur
Elle est surtout horrible parce que tu ne respectes pas la mise en forme prévue par le règlement.

Voici un petit rappel en image :

Vous devez être connecté pour voir les images.
 

memed2009

Nouveau membre
désolé au temps pour moi
entre temps j'ai visité ton sujet pour ceux qui débutent en macro sous excel, et j'ai trouvé la raison de mon erreur qui se trouvai au niveau du range je te met le code et cette fois ci sous bon format .
je l'ai testée et elle a l'air de fonctionner

[cpp]'Recherche de la dernière ligne de la colonne C
derli = Columns(3).Find("*", , , , , xlPrevious).Row
' boucle qui commence à la fin à cause des suppression de cellules
For i = derli To 2 Step -1
'Si la valeur de la cellule au dessus est égale à la valeur de la cellule (colonne C) alors
If Cells(i, 3) = Cells(i - 1, 3) Then
'on additionne les deux montants dans la cellule "F au-dessus"
Cells(i - 1, 6) = Cells(i - 1, 6) + Cells(i, 6)
Cells(i - 1, 7) = Cells(i - 1, 7) + Cells(i, 7)
Cells(i - 1, 8) = Cells(i - 1, 8) + Cells(i, 8)
'on supprime les cellules
Range(Cells(i, 1), Cells(i, 9)).Delete Shift:=xlUp
End If
Next
End Sub[/cpp]
 

zeb

Modérateur
Ah ! Ben ça fait plaisir de voir quelqu'un 1° qui lit les autres sujets et qui s'en sert, 2° qui accepte et qui adopte le règlement 3° qui teste et qui résout par lui-même ses problèmes.

Reste maintenant à voir si tu es de ceux qui acceptent la critique (objective) et qui en tirent les conséquences :

Cette macro VB traite a posteriori des problèmes que tu n'aurais pas eu en traitant a priori tes données. Que donne tes recherches sur la clause GROUP BY et son application à ton problème ?
 

memed2009

Nouveau membre
Re ZEb, je n'ai pas encoe eu le temps de m'y pencher ma responsable étant venu me parler, mais pour ta critique, elle est trés pertinente, j'ai hate de voir ce que ca donnera avec group by, ca devrai me faciliter pas mal de choses effectivement.

Je m'y plonge et te tiens au courant.

merci encore bonne journée
 

memed2009

Nouveau membre
Bonjour, n'ayant pas eu trop le temps de me plonger dans la requête "GROUP BY", je fais appel à vos services pour une dernière macro et mon fichier sera complet et je pourrais l'envoyer ma responsable.
Comme j'ai du croisé une troisième base de données avec les deux initiales.Lorsque je fusionne les lignes avec la macro posté précedemment, j'obtiens pour chaque nom 7 lignes didentiques suite à ma requête Access.
J'ai essayé d'appliquer une seconde macro pour supprimer les doublons suite à la fusion mais elle ne fonctionne pas.

[cpp]Dim l As Long
For l = Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
If Cells(i, 4) = Cells(i - 1, 4) _
Then Rows(i).Delete
Next
End Sub

[/cpp]

merci d'avance
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 128
Messages
6 717 852
Membres
1 586 374
Dernier membre
thibaultroux
Partager cette page
Haut