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

Modification d'une macro pour préserver des formules

  • Initiateur de la discussion Initiateur de la discussion TgR
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

TgR

XLDnaute Junior
Bonjour à tous,

Je sollicite votre aide aujourd'hui pour la modification d'une macro. A ce jour elle marche très bien mais je viens de m'apercevoir ce matin qu'il y avait quand même un petit souci. Je m'explique :

Cette macro sert à effacer les cellules vertes et les cellules contenant des "P" (cellules K à AO) en fonction de la date de sortie entrée en cellule H.

Code:
rg = ActiveSheet.Index

For Each c In Sheets(rg).Range("H4;H423")
    If IsDate(c) Then
        c.Offset(0, 3 + Day(c)).Resize(1, 31).ClearContents
        c.Offset(0, 2 + Day(c)).Value = 350
        c.Offset(1, 2 + Day(c)).Resize(1, 31).ClearContents
    End If
Next c

Ce code fonctionne très bien mais je viens de m'apercevoir qu'il m'effaçait également les formules des cellules AP à BJ, et bien sur j'en ai besoin !

Sauriez vous comment faire pour que le code ci-dessus ne s'occupe que des cellules du mois (K à AO, mais AO est variable est fonction du mois et du nombre de jour dans ce mois, par exemple le mois de Juin ce sera K à AN)

Protéger la feuille n'est pas une solution, en effet, le code associé au bouton "rafraîchir "mois suivant"" a besoin que le classeur ne soit pas protégé.

Merci à tous
 

Pièces jointes

Re : Modification d'une macro pour préserver des formules

Bonjour le forum
essaye
Code:
For Each c In rg
    If c.HasFormula = False Then
        If IsDate(c) Then
            c.Offset(0, 3 + Day(c)).Resize(1, 31).ClearContents
            c.Offset(0, 2 + Day(c)).Value = 350
            c.Offset(1, 2 + Day(c)).Resize(1, 31).ClearContents
        End If
    End If
Next c
 
Re : Modification d'une macro pour préserver des formules

re
Alors là tu m'étonnes
je l'ai testé de nouveau sur ton exemple et aucune erreur et quand j'entre une formule dans la colonne H (qui soit dit en passant n'en contient pas) elle effectue son travail
bizarrerie de l'informatique?
 

Pièces jointes

Dernière édition:
Re : Modification d'une macro pour préserver des formules

Bonjour à tous,

à Jpb388 : ce n'est pas Tgr qui a répondu "Désolé. Erreur!" au message 3 ; c'est moi qui m'était trompé de fil pour une réponse...et j'ai tout effacé...Encore désolé d'avoir semé la pagaille!

Cordialement
 
Re : Modification d'une macro pour préserver des formules

Salut à toi jpb388,

Merci pour ton aide. Malheureusement ton code ne fonctionne pas. Peut être ai-je mal expliqué mon problème.

Lorsque je rentre ton code rien ne change malheureusement. Les formules présentes dans les colonnes AP à BJ sont effacés :/ !

Peut être faudrait-il conserver les formules par un moyen détourné ? Peut être enregistrer les formules dans un coin du tableur qui n'est pas concerné par la macro et ajouter un bout de code qui copie colle ces formules dans les colonnes AP à BJ ^^

Ca serait très vilain mais bon...
 
Re : Modification d'une macro pour préserver des formules

re
en #7 tu dis
Les formules présentes dans les colonnes AP à BJ sont effacés :/ !

et en #1
For Each c In Sheets(rg).Range("H4;H423")

donc il n'y a que la colonne H qui est traitée
si tu utilises le même principe pour ap à bj cela fonctionnera
si je ne vois pas de message indiquant que tu as réussi je te le ferai ce soir
 
Re : Modification d'une macro pour préserver des formules

En fait la macro n'est sensée traiter que les colonnes :

C à F : Action de copier/coller les données au même endroit dans l'onglet suivant via un test sur les cellules H et C.
(bouton rafraîchir mois suivant)

K à AO (ou AN en fonction du mois) : copier/coller les cellules vertes (en continuant l'incrémentation de 1) et les cellules contenant "P" au même endroit sur l'onglet suivant.
(bouton rafraîchir mois suivant)

Ça c'est une macro différente (module 1) de celle qui me pose un souci (module 2) .

J'ai ensuite demandé de l'aide sur le forum pour pouvoir effacer les cellules vertes et les "P" lorsqu'une date de sortie est entrée dans la colonne H. C'est le module 2 et le code dont j'ai parlé précédemment.

Donc en effet, toutes les cellules dépassant AO ne doivent pas être manipulées. Seulement le code du module 1 me permettant de recopier les cellules vertes m'empêche de protéger le classeur. Voilà pourquoi aujourd'hui j'essaye de voir comment faire pour uniquement manipuler le "tableau des cases vertes" et pas plus via ce code de "gommage".
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…