Tu as du mérite à mettre les mains dans le cambouis c est comme cela que l on apprend et je trouve que malgré tout ce que tu as composé est tout à fait honorable veut pour preuve que cela fonctionne
Donc mes commentaires pour quelques réajustements ni plus ni moins
Surtout persiste dans cette voie qui est très prometteuse
N hesites pas à demander en cas de doute on se fera un plaisir de t’aider
A très bientôt j’espère
Bonsoir FFO,
J’ai encore travaillé sur mon fichier en y ajoutant des commentaires lorsque les semaines a archiver sont déjà présentes en archives ,ce qui fonctionne bien , mais je souhaiterais pouvoir ,lorsque ce que je valide un nouvel archivage pour une semaine déjà présente en onglet « CP COMPILATION » , émettre une option soit de copie en plus à la suite ou d’écraser les données existantes pour cette semaine et donc d’effacer les données déjà stockées pour la dite semaine ,j’espère être clair !!
Actuellement la proposition que je fait est uniquement de recopie .
On avance bien sur ce tableau
TEST PLANNING AVEC ARCHIVAGE(1).xlsm (32,2 Ko)
Le tableau joint .
Franck .
Ci-joint ton fichier avec une macro supplémentaire « suppression_semaine() » à utiliser pour nettoyer les enregistrements de l’onglet « CP COMPILATION » dont la semaine colonne « B » est identique à la semaine de la cellule « I21 » de l’onglet « JOURS ABSENTS PAR SEMAINE »
A toi de l’appeler en fonction du choix de l’utilisateur avant d’appeler la macro qui intègre les nouvelles données
Si tu as des difficultés fais moi signe
La macro qui enlève les enregistrements de la semaine onglet « CP COMPILATION » le réalise en supprimant leur ligne entière
J’ai préféré cette option plutôt que de les vider afin d’éviter une succession d’enregistrement avec des des lignes sans aucune donnée moins présentable de mon point de vue
Cela nécessitera de revoir le quadrillage qui avec ces suppressions va obligatoirement se réduire
A toi de voir et me dire
Le fichier avec cet ajout
TEST PLANNING AVEC ARCHIVAGE(1).xlsm (28,6 Ko)
Merci FFO ,
J’ai fais ainsi pour la Sub_doublons () :
If reponse = vbYes Then MsgBox « OK pour nouvel archivage et mise a jour de la semaine N° » & (Sheets(« JOURS ABSENTS PAR SEMAINE »).Range(« I21 »)), vbInformation, « ACTION EN COURS »: Call suppression_semaine
et pour la Sub suppression_semaine():
Loop
Call COPIER_LES_VALEURS
End Sub
Le resultat attendu est obtenu ,merci pour ton grand coup de pouce !!
En principe ce sujet est clos ,mais je me connais et comme j’ai une idée par minutes ,il y a de grande chance que le fichier évolue d’ici la fin du week-end
Merci pour tout ,
Bonne soirée à toi .
Franck .
Merci pour ce retour positif
Dans les lignes de codes que tu donnes que vient faire celle-ci :
et pour la Sub suppression_semaine():
A quoi est destiné cette ligne
N est elle pas en trop ?
Dans ma première analyse ,non ,car elle me permet une fois avoir validé ma suppression des lignes « If reponse = vbYes Then MsgBox « OK pour nouvel archivage et mise a jour de la semaine N° » & (Sheets(« JOURS ABSENTS PAR SEMAINE »).Range(« I21 »)), vbInformation, « ACTION EN COURS »: Call suppression_semaine » de lancer la recopie des lignes de la semaine en question après leurs suppresion,je verrai demain pour amener l’option ou soit l’on recopie a la suite ou soit en utilisant ton code ,on efface et on remplace les données .
Franck .
Dans ta ligne de code de choix si la réponse est positive tu appeles comme macro ceci :
Call suppression_semaine
et pour la Sub suppression_semaine():
La macro suppression_semaine ok mais qu en est il de : et pour la Sub suppression_semaine(): ???
Pour moi cette dernière partie est en trop
A toi de voir
Bonjour FFO ,
je ne vois pas pourquoi cette dernière est en trop …
Je te donne les deux macro complète ,la première ou je determine si oui ou non on ecrase les lignes et si oui on lance la macro pour les effacer mais du coup je lance de nouveau la macro pour réecrire les lignes effacées:
1)Sub doublons()
Set trouve = Sheets(« CP COMPILATION »).Range(« B:B »).Find(Sheets(« JOURS ABSENTS PAR SEMAINE »).Range(« I21 »), lookat:=xlWhole)
If Not trouve Is Nothing Then
reponse = MsgBox("Sauvegarde de la semaine N°" & (Sheets("JOURS ABSENTS PAR SEMAINE").Range("I21")) & " déjà présente , voulez-vous la copier de nouveau ?", vbYesNo, "REPONSE UTILISATEUR")
If reponse = vbYes Then MsgBox "OK pour nouvel archivage et mise a jour de la semaine N°" & (Sheets("JOURS ABSENTS PAR SEMAINE").Range("I21")), vbInformation, "ACTION EN COURS": Call suppression_semaine ===> ok on supprime les lignes correspondantes mais on les recopie pas .
If reponse = vbNo Then MsgBox "D'accord,Ne pas archiver de nouveau la semaine N°" & (Sheets("JOURS ABSENTS PAR SEMAINE").Range("I21")), vbExclamation, "OK POUR QUITTER": Exit Sub
End If
If trouve Is Nothing Then Call COPIER_LES_VALEURS==> si pas de doublon on execute la macro normalement .
End Sub
2)Sub suppression_semaine()
i = Sheets(« CP COMPILATION »).Range(« A » & Rows.Count).End(xlUp).Row
Do While i > 2
If Sheets(« CP COMPILATION »).Range(« B » & i).Value = Sheets(« JOURS ABSENTS PAR SEMAINE »).Range(« I21 »).Value Then
Sheets(« CP COMPILATION »).Rows(i & « : » & i).Delete===> on efface les lignes mais pas de recopie c’est pourquoi je lance ensuite la macro COPIER_LES_VALEURS
End If
i = i - 1
Loop
Call COPIER_LES_VALEURS
End Sub
Il y a peut-etre une subtilité que tu auras cerné et qui m’échappe
Franck .
Attention mon interrogation a disparu
Avec l option réponse à oui en fin de ligne de code je n ai plus que :
Call suppression_semaine
Et non :
Call suppression_semaine
et pour la Sub suppression_semaine():
Avec la partie en plus :
et pour la Sub suppression_semaine():
Qui ne me convenait pas
Oui pour :
Call suppression_semaine
Non pour :
Call suppression_semaine
et pour la Sub suppression_semaine():
La 2° ligne est en trop
Donc avec tes dernières lignes de codes on est en phase celles-ci :
reponse = vbYes Then MsgBox « OK pour nouvel archivage et mise a jour de la semaine N° » & (Sheets(« JOURS ABSENTS PAR SEMAINE »).Range(« I21 »)), vbInformation, « ACTION EN COURS »: Call suppression_semaine
mais pas avec celles que tu m’avais dans un premier temps fournies qui sont celles-ci :
If reponse = vbYes Then MsgBox « OK pour nouvel archivage et mise a jour de la semaine N° » & (Sheets(« JOURS ABSENTS PAR SEMAINE »).Range(« I21 »)), vbInformation, « ACTION EN COURS »: Call suppression_semaine
et pour la Sub suppression_semaine():
Loop
Call COPIER_LES_VALEURS
End Sub
Oui effectivement vu comme ça nous sommes d’accord !!
Je reviens peut-être vers toi plus tard dans le week-end car je suis sur une modification qui me triture l’esprit et je souhaite essayer de la faire seul (on verra si j’y arrive )
Bon après midi !!
Franck .
Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.