Microsoft 365 Remplacer données dans TS

eric72

XLDnaute Accro
Bonjour à tous, je rencontre de nouveau un souci que je vais tenter de vous expliquer:
- j'ai un tableau dans l'onglet "Export a Copier" avec un bouton COPIER TABLEAU, jusque là tout va bien
- J'ai un deuxième bouton REMPLACER DONNEES DANS TABLEAU qui informe que les données pour ce "Mois Année" ont déjà été enregistrées, on demande alors si l'utilisateur veut remplacer ces données dans l'archive, à ce moment la macro supprime les données du même Mois Année, puis recopie l'Export, cet à ce moment que ma macro tourne en rond, elle supprime bien, recopie bien les données mais retourne au début du code et boucle, il y a une erreur mais je ne vois pas ou!!!
Merci beaucoup pour votre aide.
Eric
 

Pièces jointes

  • TEST.xlsm
    42.4 KB · Affichages: 9
Solution
Bonjour à tous,

Il me semble (opinion toute personnelle) que votre code est un peu compliqué.
J'en ai écrit un qui est plus court, qui ne distingue pas entre copie et mise à jour (c'est la même macro).
  • on commence par ôter de l'archive toutes les lignes qui ont un [Mois année] présent dans l'export à copier
  • ensuite on copie toutes les données de l'export dans l'archive
  • on termine par un tri de l'archive
Le code est commenté.

Encore faut-il que cela corresponde à votre besoin...

Pour votre erreur, je m'y mettrai dès que possible.

wDog66

XLDnaute Occasionnel
Bonjour eric72
supprime les données du même Mois Année, puis recopie l'Export, cet à ce moment que ma macro tourne en rond, elle supprime bien, recopie bien les données mais retourne au début du code et boucle, il y a une erreur mais je ne vois pas

Vous feriez du pas à pas lors de l'exécution de votre macro, vous verriez qu'il y a un gros souci
06 2024 est également effacé, du coup ce sont toutes les lignes 🤔

A+
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous,

Il me semble (opinion toute personnelle) que votre code est un peu compliqué.
J'en ai écrit un qui est plus court, qui ne distingue pas entre copie et mise à jour (c'est la même macro).
  • on commence par ôter de l'archive toutes les lignes qui ont un [Mois année] présent dans l'export à copier
  • ensuite on copie toutes les données de l'export dans l'archive
  • on termine par un tri de l'archive
Le code est commenté.

Encore faut-il que cela corresponde à votre besoin...

Pour votre erreur, je m'y mettrai dès que possible.
 

Pièces jointes

  • eric72- archivage- v1.xlsm
    35.4 KB · Affichages: 6
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Votre anomalie (erreur d'exécution) :
VB:
If PL(k) = PeriodeSite Then PL.ListObject.ListRows(i).Delete

Je pense, à mon humble avis, que l’indice i n'a pas sa place dans cette instruction. Il s'agit de k (boucle sur l'archive) et non pas de i qui est l'indice de boucle sur les données à copier.
Sans doute une coquille et c'est souvent très difficile à trouver quand il s'agit de son propre code (je parle par expérience).

VB:
If PL(k) = PeriodeSite Then PL.ListObject.ListRows(k).Delete
Avec cette modification, votre code semble bien se dérouler (sans erreur).


Concernant la boucle :
Prenons le mois année 05 2024. Si l'utilisateur veut la copie alors :
vous ôtez toutes les lignes "05 2024"de l'archive
puis vous copiez tout l'export dans l'archive

Ensuite vous passez à la deuxième ligne de l'export ;
vous cherchez 05 2024 dans l'archive et vous le trouvez car vous avez déjà transféré une fois le tableau export dans archive
vous ôtez toutes les lignes "05 2024"de l'archive
puis vous copiez tout l'export dans l'archive

Ensuite vous passez à la troisième ligne de l'export ;
vous cherchez 05 2024 dans l'archive et vous le trouvez car vous avez déjà transféré deux fois le tableau export dans archive
vous ôtez toutes les lignes "05 2024"de l'archive
puis vous copiez tout l'export dans l'archive

et ainsi de suite jusqu'à la dernière ligne de l'export...

En fait, une fois que vous avez transféré le tableau, il est inutile de continuer. Si l'export concerne plusieurs mois alors c'est une autre affaire (ma version doit gérer ce cas là).

En espérant que j'ai bien analysé votre code...
 
Dernière édition:

eric72

XLDnaute Accro
Bonjour à tous,

Il me semble (opinion toute personnelle) que votre code est un peu compliqué.
J'en ai écrit un qui est plus court, qui ne distingue pas entre copie et mise à jour (c'est le même macro).
  • on commence par ôter de l'archive toutes les lignes qui ont un [Mois année] présent dans l'export à copier
  • ensuite on copie toutes les données de l'export dans l'archive
  • on termine par un tri de l'archive
Le code est commenté.

Encore faut-il que cela corresponde à votre besoin...

Pour votre erreur, je m'y mettrai dès que possible.
Bonjour,
Merci beaucoup pour votre réponse, c'est parfait, le seul petit hic est que je souhaitais mettre une sécurité avec le Msgbox et la confirmation de l'utilisateur, mais après réflexion ça n'est peut-être pas nécessaire!!!
 

eric72

XLDnaute Accro
Bonjour à tous,

Il me semble (opinion toute personnelle) que votre code est un peu compliqué.
J'en ai écrit un qui est plus court, qui ne distingue pas entre copie et mise à jour (c'est le même macro).
  • on commence par ôter de l'archive toutes les lignes qui ont un [Mois année] présent dans l'export à copier
  • ensuite on copie toutes les données de l'export dans l'archive
  • on termine par un tri de l'archive
Le code est commenté.

Encore faut-il que cela corresponde à votre besoin...

Pour votre erreur, je m'y mettrai dès que possible.
Après réflexion, votre solution convient tout à fait, c'est parfait.
Merci beaucoup pour votre aide précieuse.
Bonne soirée.
 

Discussions similaires

Réponses
5
Affichages
438

Statistiques des forums

Discussions
315 094
Messages
2 116 150
Membres
112 670
dernier inscrit
Flow87