Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Fusion de données de plusieurs onglets sous conditions

kvizou

XLDnaute Nouveau
Bonjour à tous,


Petit nouveau dans le développement VBA, je cherche à me perfectionner pour développer des outils qui me font gagner du temps au quotidien.

Je suis cependant bien embêter car après plusieurs heures de recherches et d'essais, je n'arrive pas à développer mon projet.
Je vous présente mon projet test :

3 onglets de données sources représentant chacun une ville
1 onglet de destination (là ou je veux copier les nouvelles données issues des 3 onglets sources)


1) Dans l'onglet de destination, j'aimerais copier les données dans les colonnes B à E, issues des 3 onglets de données sources.
2) Etant donné qu'il y a déjà des données dans l'onglet de destination, je souhaite ne copier que les nouvelles données. Pour se faire, la macro doit reconnaitre par une clé unique, quelles sont les lignes déjà copier (en concaténant les champs Date + Thème + Description de l'évènement) de chaque onglet.
3) la macro va alors copier les données identifiées comme "non doublon" à la suite dans l'onglet de destination
4) Pour chaque onglet, la macro doit également recopier le nom de l'onglet dans la colonne A afin d'identifier de quelle source provient l'information.
5) Pour chaque onglet, toutes les données jusqu’à la dernière valeur non vide sont à copier dans l’onglet destination


Sub copie_données()

' Définition des variables
Dim Par As Range 'Variable d'incrémentation Paris
Dim Rou As Range 'Variable d'incrémentation Rouen
Dim Ren As Range 'Variable d'incrémentation Rennes
Dim Des As Range 'dernière ligne non vide

' copie_données

' Dernière ligne non vide du fichier de destination
Des = Sheets("Destination").Cells(Rows.Count, colonne).End(xlUp).Row
' copie_données Paris

Sheets("Paris").Select
With Sheets("Paris")
Do While Cells(Par, 1) <> ""
.Range(Cells(Par, 1), Cells(Par, 3)).Copy .Sheets("Destination").Cells(Des, 3)
Ldv = Par + 1
Des = Des + 1
Loop
End With
End Sub


Voici le lien de mon fichier exemple :
https://www.cjoint.com/c/KInqRsRgDUV

Sauriez-vous m’aider à débuter mon outil ?
Je vous remercie en avance pour votre aide colaborative à mon petit projet
 

fanfan38

XLDnaute Barbatruc
Bonjour ci joint ma solution mais
si tu utilise comme clé Date + Thème + Description de l'évènement tu n'auras pas les événements des autres ville ayant la même clé j'ai donc ajouté la ville...
Dans la macro je commence par effacer les données qui sont sur la feuille "destination"

A+ François
 

Pièces jointes

  • Fusion-données.xlsm
    25.5 KB · Affichages: 11

kvizou

XLDnaute Nouveau
Bonjour et merci beaucoup François pour ton retour.
Ton programme est une bonne base de travail pour ce que je recherche. Il est très propre même si je n'y comprend pas encore la totalité. J'apprécie que vous ayez passer un peu de temps sur mon projet.

Néanmoins, je n'ai pas exprimé (ou très mal j'en suis désolé :/ ) l'objet du champ clé pour la copie des données. Je vais préciser plus en détail les 2 autres contraintes qui en découle :

1) Le champ destination peut déjà comporter des informations (issue d'un historique) qui ne sont pas dans les 3 onglets. Par conséquent, j'aimerais pouvoir copier les données à la suite de cet historique.
2) Certaines données (dans le champ destination) peuvent déjà être présentes (dans les données sources) que tu supprime avant de les remettre. Etant donné que j'ai d'autres colonnes ou je saisie des informations manuelles, j'aimerais conserver au même endroit cette ligne, et copier uniquement le delta des nouvelles lignes issues des 3 onglets précédents.
D'où le fait d'utiliser la clé pour reconnaitre les lignes déjà importer dans "Destination" et ne copier que celles dont la clé lui est inconnue.

Merci une nouvelle fois pour votre aide précieuse !
 

Discussions similaires

Réponses
16
Affichages
648
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…