Probleme doublons sous vba

Fermé
traersa - 28 juil. 2009 à 15:43
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 - 28 juil. 2009 à 18:41
Bonjour,

Je dispose d'une base de 3000 lignes dans laquelle j'ai un identifiant, mon gros probleme est que avant ma base etait sous excel, je souhaitais donc la passer sous access, mais la probleme mon identifiant n'est pas unique.
Mais je ne veux pas perdre les actions créé sur un identifiant, en réalité à chaque modification ils ont créé une nouvelle ligne au lieu de completer la premiere...
Je ne sais pas si je suis tres clair donc je vais illustrer par un exemple, je pense que ce sera plus simple.

Identifiant Var 1 Var2 Var3 Var4
toto a b c d
dupond d e f g
dupont h i j k
toto l m n o

Donc je pensais trier afin de n'avoir a comparer que la ligne du dessus evidement, mais ce que je voudrais c'est ca

Identifiant Var 1 Var2 Var3 Var4 Var1bis Var2bis Var3bis Var4bis
toto a b c d l m n o
dupond d e f g
dupont h i j k

J'ai deja essayé a plusieurs reprise mais j'avoue que mes connaissance en vba ne sont pas assez poussées, si quelqi'un pouvait m'aider ce serait super

6 réponses

jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
28 juil. 2009 à 15:51
bonjour

donc tu veux regrouper sur la meme ligne les info de chaque identifiant différent ?
0
Oui c'est ca, il faut donc comparer les resulats de la colonne identifiant avec la ligne courante et la ligne courante +1
0
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
28 juil. 2009 à 16:26
ok,

For tmp1 = 1 To 20
a = Cells(tmp1, 1)
For tmp2 = 2 To 20
If Cells(tmp2, 1) = a And tmp1 <> tmp2 And Cells(tmp1, 1) <> "" Then
'recherche de la derniere case vide de la source
tmp3 = 2
While Cells(tmp1, tmp3) <> ""
tmp3 = tmp3 + 1
Wend
'copi de toutes les cases de dest => source
tmp4 = 2
While Cells(tmp2, tmp4) <> ""
Cells(tmp1, tmp3) = Cells(tmp2, tmp4)
tmp3 = tmp3 + 1
tmp4 = tmp4 + 1
Wend
Set mc = Worksheets("Feuil1").Cells(tmp2, 1)
Set currentCell = Worksheets("Feuil1").Range(mc.Address())
currentCell.EntireRow.Delete

End If
Next
Next


voili la ptite macro :)
0
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
28 juil. 2009 à 16:33
Bien sur il faut changer

Set currentCell = Worksheets("Feuil1").Range(mc.Address())

par le nom de ta feuille
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Merci beaucoup pour ton aide si rapide ca me donne une tres bonne base de travaille, je vais adapter ca pour plusieurs doublons, vraiment merci beaucoup
0
En fait je viens de voir que ta requete traite deja le cas de plusieurs doublons, tu as donc repondu a tout mon probleme...
merveilleux
0
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
28 juil. 2009 à 18:41
ben c'est que j y ai réfléchi un peu ;):p
0