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

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

jpb388

XLDnaute Accro
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
 

jpb388

XLDnaute Accro
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:

mécano41

XLDnaute Accro
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
 

TgR

XLDnaute Junior
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...
 

jpb388

XLDnaute Accro
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
 

TgR

XLDnaute Junior
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".
 

Discussions similaires

Réponses
8
Affichages
885

Statistiques des forums

Discussions
315 294
Messages
2 118 141
Membres
113 436
dernier inscrit
LAROQUE