Reporter lignes de données d'un onglet à un autre

excel_ff

XLDnaute Nouveau
Bonjour à toutes et à tous,

Fréquemment, je dois effectuer une vérification de base de données EXTREMEMENT fastidieuse qui pourrait être simplifié je pense grâce à une macro. Donc je remercie d'avance les personnes qui seront prêtes à m'aider car cela me fera gagner énormément de temps!

Explication de mon besoin (illustration dans fichier Excel ci-joint) :

J'ai un bloc de données "source" = données des colonnes ID, Désignation et Adresse de l'onglet AA.

On retrouve ce bloc de données "source" dans les mêmes colonnes, dans d'autres onglets du fichier (dans mon exemple, onglet AB et AC).

Chaque onglet détient des informations différentes concernant ce bloc de données. Dans mon exemple, l'onglet AA détaille le "Statut" et la "Version", l'onglet AB la "Fonction" et l'onglet AC le "problème rencontré". Et ces infos sont rattachées aux données communes qu'on retrouve dans les 3 onglets (c'est à dire mon bloc de données "source").

Je souhaiterais qu'à l'exécution de ma macro, elle réalise ceci:
Si j'ai ajouté N ligne (dans mon exemple; ligne avec l'ID "10.1" et "18.1") dans mon bloc de données "source", je souhaiterais qu'elle l'insère au même emplacement (c'est à dire entre l'ID "10" et "11" pour "10.1" et entre "18" et "19" pour "18.1") et qu'elle renseigne dans les colonnes communes aux trois onglets (ID, Désignation et Adresse) les données que j'aurais renseigné dans mon bloc de données "source". Par contre, pas celles qui ne sont pas communes au trois onglets !
Donc si on prend mon exemple; je souhaiterais que les données des colonnes ID, Désignation et Adresse de l'onglet AA se retrouvent dans les deux autres onglets AB et AC au même emplacement. Mais je ne veux pas qu'elle reporte les données des colonnes "Statut" et "Version" (onglet AA) dans les deux autres onglets, AB et AC.

Le TOP du TOP serait que la macro fasse la modif dans les autres onglets de manière instantanée. Mais je ne suis pas certains que ce soit possible ?

Je suis novice en VBA donc malheureusement j'admets ne pas réussir à adapter les infos que je trouve dans les autres discussions car les cas ne sont pas tout à fait identiques...

Un très grand MERCI à celles et ceux qui voudront bien m'aider ! :) car je pleurs à chaque fois que je dois checker mes fichiers...

Au plaisir de vous lire
 

Pièces jointes

  • test_macro.xls
    37 KB · Affichages: 66
  • test_macro.xls
    37 KB · Affichages: 54
Dernière modification par un modérateur:

excel_ff

XLDnaute Nouveau
Re : Reporter lignes de données d'un onglet à un autre

Salut Frédéric !

Tout d'abord je te remercie beaucoup de bien vouloir m'aider ! :)

J'ai testé ton fichier. Dans l'idée c'est ça, mais voila ce que j'ai fait et voila comment la macro à réagi :
1/ Dans un premier temps j'ai exécuté la macro, la copie s'est faite nickel
2/ J'ai renommé la cellule qui contenait 10.1 et j'ai mis 10.2 à la place. J'ai exécuté la macro. La BDD s'est copié deux fois, l'une à la suite de l'autre (Cf le fichier), au lieu de "mettre à jour" selon les modif que j'ai effectué (le 10.2 à la place du 10.1).
3/ Ensuite j'ai ajouté le texte "fred te dit merci". J'ai exécuté la macro. Elle a de nouveau copié la BDD à la suite.

En premier lieu, j'ai pensé que le code comparait ce qu'il voyait dans ID pour voir ce qu'il y avait de "nouveau" dans la BDD afin de faire les mise à jour, mais après avoir testé une seconde fois en modifiant uniquement l'adresse de 10.1, la macro a réagi de la même manière.

Du coup, je pense que ce que je souhaite est plus complexe que je veux bien le croire étant donné qu'il ne s'agit pas juste de reporter une BDD "fixe" dans d'autres onglets. Il s'agit de faire une comparaison entre la BDD d'avant (défini par les données présentes dans les onglets AB et AC) et la BDD de maintenant (illustré par la BDD Source de l'onglet AA).
Donc en fait, la macro doit checker la BDD Source en AA pour s'assurer que les données sont identiques dans AB et AC en se basant sur l'ID.
Si la macro trouve l'ID mais que les données correspondantes ont changé, alors il faudrait qu'elle les mette à jour.
Si la macro ne trouve pas l'ID, il faudrait qu'elle supprime dans AB et AC les lignes dont l'ID n'existe plus dans AA et qu'elle ajoute les nouvelles lignes de AA dans AB et AC.

Et finalement, on est pas obligé d'avoir les lignes de AB et AC dans le même ordre que dans AA car en filtrant les ID par ordre croissant dans AB et AC je devrais retrouver l'ordre de base que j'ai dans AA. C'est déjà ça de gagné ! :)

Qu'en penses tu ?

Cdlt
Fred (c'est également mon prénom...)
 

Pièces jointes

  • test_macro_1.xls
    57.5 KB · Affichages: 41

fredl

XLDnaute Impliqué
Re : Reporter lignes de données d'un onglet à un autre

Bon,...
je viens d'faire qqe chose, mais cela ne va pas etre bon...?
regarde toujours :
en fait de maniere auto, toute modif en AA faite manuellement se repercute en AB et AC (meme l'ajout de ligne=nouvel ID :si les 3 colonnes sont renseignées:repercution infos ds les autres onglets)

En relisant tes post, je crois comprendre finalement que les données importées en AA proviennent d'un coup d'une Base de donnée?
Si oui et si tu confirmes que l'ID peut changer dans le temps, qu'est ce qui peut nous permettre de savoir si l'ID modifié n'est pas un ajout de ligne?
Dans ce cas de figure, pour reconnaitre les lignes, il nous faut une info fixe (ou l'ID ne doit pas pouvoir etre modifié)
Mais peut etre n'ai je pas tout bien compris?
Cdt
Frédéric
 

Pièces jointes

  • test_macro_2.xls
    53.5 KB · Affichages: 51

excel_ff

XLDnaute Nouveau
Re : Reporter lignes de données d'un onglet à un autre

Salut Frédéric,

J'ai ouvert ton fichier mais je suis désolé, je n'ai pas compris ce que je devais essayer :-S

Effectivement, normalement les ID ne sont pas sensé changer, uniquement les données liées à l'ID (désignation et adresse).

Donc normalement il y a uniquement 3 scénarios qui peuvent se produire :
1/ On supprime un ID de notre BDD Source (donc en AA) et toutes les données qui son liées (en gros on supprime la ligne de la feuille de calcul AA),

2/ On modifie une ou plusieurs données liées à un ID déjà existant (soit juste la désignation, soit juste l'adresse, ou les deux),

3/ On créé un nouvel ID avec une désignation et une adresse associée.

Donc pour synchroniser AB et AC avec AA, la macro devrait faire je pense :
- Récupérer la valeur de ID (en AA) et la chercher dans (AB)
- Si elle la trouve => recopier les valeurs désignation & adresse
- Si elle ne la trouve pas => recopier les valeurs ID, désignation & adresse sur la dernière ligne de (AB)
- Idem pour (AC)

Par contre pour supprimer les ID de (AB) et (AC) qui ne sont plus dans (AA), je ne sais pas trop. Peut être faire la même chose mais dans l'autre sens :
- Récupérer la valeur de ID (en AB) et la chercher dans (AA)
- Si elle la trouve => RAS, tout va bien
- Si elle ne la trouve pas => suppression de la ligne dans (AB)
- Idem pour (AC)

Qu'en penses-tu ?

Merci encore pour ton aide précieuse !

Cdlt
Fred
 

fredl

XLDnaute Impliqué
Re : Reporter lignes de données d'un onglet à un autre

Bonjour,
le fichier que je t'ai fourni gère le point 2 et 3
Fais un essai (ajouter une ligne, modifier une ligne)
Par contre elle ne gère pas le point 1
Pour le gérer, ta démarche est bonne.
Je te laisse donc essayer de la programmer et revenir vers moi si pb
Cdt
fred
 

Discussions similaires