XL 2010 copie automatique sans doublon et avec condition sur plusieurs feuilles RÉSOLU

br44

XLDnaute Impliqué
Bonjour le forum ,

je reviens vers pour vous poser une question . peut-on crées une listes de nom sans doublons à partir de listes située sur 4 plages différentes sur le même feuille ?avec pour option le regroupement de nom .
exemple de regroupement les blés d'or et germaine même joueur où alors modification du nom :
la grande ferme de jojo qui devient jojo pour regrouper je peut le faire avec la fonction " concatener " , mais le souci c'est de faire comprendre à excel qu'ils ne s' agit pas d'une nouvelles personne mais d'un regroupement pour la procédure qui suit puisse s'applique en regroupent les résultat de chaque noms sur le même lignes voir exemple dans le feuille 2 de mon fichier joint
Et dans un deuxième temps faire la même procédure pour des plage situé dans le même colonne dune feuille mais ne regrouper que 3 plages pour feuille 3 vers feuilles 4 et de 4 vers 5 .

en vous remerciant par avance du coup de pousse et en espérant être claire je vous dit à bientôt . amicalement br44

P.S N'hésiter pas à me dire si se n'est pas claire où si vous aves des question ;
 

Pièces jointes

  • EXPLAIRE FORUM.xlsx
    506.6 KB · Affichages: 45

br44

XLDnaute Impliqué
Bonjour Youky ,
Se petit message pour faire le point après mes teste . se qui fonctionne c'est la liaison entres le feuil 3 et 4 . c'est bon j'ai testes il ne reste plus qu'a modifier les formule pour l'affichage se face donc pas de souci à première vue . mais la liaison entre le feuille 2 vers la feuille 3 ne fonctionne pas surtout au niveau du décalage qui ne fait pas .A moins qu'il faut remplir le tableau pour que cela fonctionne mais je ne le pense pas . J'ai essayer de comprendre tes différentes macro mais rien compris a part que tu a mis un compteur pour enregistrer le nombre de fois tu clic et que cela donne la boucle annuel si j'ai saisi le sens de ta procédure . le souci se situe au niveau du collage des informations deans le feuille 3 car quand tu clique sur le bouton rien ne se produit la macro "archive " sur le quel il est relier na pas l'aire de s'exécuter. te remerciant pour tout et m'excusant du dérangement je te dit à plus ci joint le fichier concerner . Amicalement Br44
 

Pièces jointes

  • EXPLAIRE FORUM version 1.1 (1).xlsm
    623 KB · Affichages: 17

youky(BJ)

XLDnaute Barbatruc
Ben Oui j'avais pas bien compris ta demande de feuil2 à feuil3
C'est bien plus simple
Remplace la macro "archive" par celle çi
Bruno

Edit : Je mets que les valeurs donc plus de formules
VB:
Sub archive()
'mets nb course de feuil2 dans Feuil3 selon periode
periode = [C9] - 1
If Not IsNumeric(periode) Then MsgBox "Remplir C2 (periode)!": Exit Sub
deb = (50 * periode) + 11
Feuil3.Range("B" & deb & ":AC" & deb + 36).Value = _
Feuil2.[B11:AV47].Value
End Sub
 

br44

XLDnaute Impliqué
bonsoir Youky ,
Merci pour la rapidité j'ai tester ta macro je te dit merci et bravo elle fonctionne très bien . il ne me restait plus qu'a reprendre ta première macro que tu as nommé "mes noms " et ensuite faire la liaison entre le feuille 4 vers la feuille 5 . je te rassure elle fonction très bien sur le principe , mais elle prend en compte comme noms les l'entête de chaque tableau se qui correspond au ligne 8-63-118-173 , de la feuille 4 . jai essayer de modifier mais aucun résultat . je pense quand rajoutant un step de 4 lignes toutes les 50 lignes cela réglerais le problème , mais où doit -je l'insérer dans ta macro si tu veux me l'indiquer je me chargerais de faire le modification .Amoin que se soit pas cela et que je me trompe . En te remerciant de nouveau pour le coup de main.
je te remets ci dessous ta macro :
Code:
 Sub mesnoms()
lig = -49
Set dico = CreateObject("Scripting.Dictionary")
For k = 1 To 4
lig = lig + 55
For Each c In Feuil4.Range("B" & lig & ":B" & lig + 50)
If c.Value <> "" Then
dico.Item(c.Value) = dico.Item(c.Value)
End If
Next
Next
Feuil5.Range("B43").Resize(dico.Count) = Application.Transpose(dico.keys)
End Sub
Je te souhaites un bon dimanche et merci encore amicalement Br44
 

youky(BJ)

XLDnaute Barbatruc
Hello,
Vite fait à vérifier
lig=-49 ensuite lig=lig+55
-49+55=6 donc lig commence à 6 soit 6 à56 dans la 1ere boucle du For Each
Oups! je crois que c'est là sur le For remplace +50 par +49 sinon on va trop bas
Voir aussi la ligne des noms des joueurs en classement trim.. commence en 6-61-116-171
Bruno
 

br44

XLDnaute Impliqué
Bonjour ,Youky
juste se petit message pour te remercier pour toute ton aide précieuses et t'annoncer une très bonne nouvelle CA MARCHE YES !
J'ai mis ci dessous l ta macro modifier . il ne reste plus qu'au faire le transfert de tout cela dans mon fichier principal et faire des testes après avoir rétablie les connections pour l'affichage automatique des données dans le tableau trimestriel .

Sous reserve d'un beug j'annonce que le poste est clos et résolu . Amicalement BR44

VB:
Private Sub CommandButton1_Click()
[LEFT][FONT=Georgia][COLOR=rgb(20, 20, 20)]
lig = -46

Set dico = CreateObject("Scripting.Dictionary")

For k = 1 To 4

Dep = 6

lig = lig + 55

For Each c In Feuil4.Range("B" & lig & ":B" & lig + 50)

If c.Value <> "" Then

dico.Item(c.Value) = dico.Item(c.Value)

End If

Next

Next

Feuil5.Range("B43").Resize(dico.Count) = Application.Transpose(dico.keys)

End Sub
[/COLOR][/FONT][/LEFT]
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 902
Membres
101 834
dernier inscrit
Jeremy06510