• Initiateur de la discussion Initiateur de la discussion meldja
  • 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 !

meldja

XLDnaute Impliqué
Bonjour,
Je voudrais savoir s'il existe un moyen de recopier des formules de calcul.
Je m'explique ; j'ai une feuille (Feuil2) sur laquelle on doit travailler et sur laquelle je ne peux pas mettre de protection pour diverses raisons. Par sécurité, j'ai recopié toutes les formules qu'elle contient sur une autre feuille (sauve). J'ai fait un copier coller tout bête.
Au cas ou une formule de calcul serait supprimé par une macro (Flag), on ne peut pas annuler, donc je souhaiterais restaurer toutes les formules via un bouton (restore).
J'ai commencé avec :
With Sheets("sauve")
Range("B2") = .Range("B2").Formula
Range("B3") = .Range("B3").Formula

mais j'ai 128 cellules... sur pas mal de colonnes et encore plus de lignes.
Y aurait-il un moyen pour qu'excel trouve là où il y a des formules de calcul dans la feuille sauve et les recopie dans la feuille Feuil2 ?
Je ne sais pas si ma demande est claire, n'hésitez pas à me demander de reformuler s'il le faut.
Merci d'avance
 
Re : recopie de formule

Bonjour

Pour tester si la cellule contient une formule, il faut utiliser la propiété HasFormula.
Un exemple de procédure
Code:
Sub copieformule()
Dim cellule As Range
Dim plage As Range
Dim nomfeuille1 As String
Dim nomfeuille2 As String

nomfeuille1 = "Feuil1"
nomfeuille2 = "Feuil2"

With Sheets(nomfeuille1)
Set plage = .Range("a1:" & .Cells.SpecialCells(xlCellTypeLastCell).Address(0, 0))
End With
With Sheets(nomfeuille2)
For Each cellule In plage
     If cellule.HasFormula = True Then .Range(cellule.Address).Formula = cellule.Formula
Next cellule

End With

End Sub

JP
 
Dernière édition:
Re : recopie de formule

Salut,
Au premier test, je pensais que ça ne marchait pas, mais en fait, fallait juste que je change les réf des feuilles (feuil2 = feuille source et feuil1 = feuil destination).
Donc, pour conclure, c'est exactement ce que je cherchais. Je me demande où vous allez chercher tout ça. Je suis carrément impressionné.
Merci beaucoup et bonne fin de journée
 
Re : recopie de formule

Re,
Désolé de faire le lourd, mais j'avais testé ton code avec un fichier test (3 ou 4 formules de calcul). Quand je l'ai testé sur mon fichier contenant les 128 formules de calcul, ça prend une éternité ; au début, j'ai même cru que mon PC plantait, j'ai arrêté l'applic excel. Finalement, j'ai retesté avec un peu plus de patiente et ça le fait effectivement.
A ce propos, comment on est-ce qu'on arrête l'exécution d'une boucle quand elle tourne à l'infini ?
Est-ce que ça vient uniquement du nombre de formule de calcul ou y a t il d'autres paramètres à prendre en compte ?
Merci d'avance
 
Re : recopie de formule

Bonjour

Ne connaissant pas la structure du fichier, la procédure teste toutes les cellules du fichier.
Pour diminuer le temps de traitement il suffit de modifier la plage de recherche et même d'en créer.
Par exemple des formules se trouvent dans la colonne A
Set plage = .Range("a1:a20")


JP
 
Re : recopie de formule

Re,
J'ai retesté en redimensionnant la plage de recherche comme tu me l'as dit et ça va beaucoup mieux.
En fait j'avais 160 formules de calcul (y en avait une petite quarantaine dans des lignes masquées et que je n'avais pas pris en compte).
Encore merci pour ton savoir, bonne soirée
 
Re : recopie de formule

Bonsoir,

Pourquoi faire compliqué ??

Essayes çà à adapter a ton cas, je supose que les cellules contenant les formule sont en colonne A dans mon code
Code:
Sub test()
Dim I As Integer, Deb As Integer, Fin As Integer
Deb = 1
With Sheets("Feuil1")
Fin = .Range("a" & .Rows.Count).End(xlUp).Row
End With
With Sheets("Feuil2")
For I = 1 To Fin
If .Range("a" & I).HasFormula = False Then GoTo suite
.Range("a" & I).Formula = Sheets("Feuil1").Range("a" & I).Formula
suite:
Next
End With
End Sub

Gilbert
 
Dernière édition:
- 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

Réponses
18
Affichages
326
Réponses
13
Affichages
670
  • Question Question
Microsoft 365 Tableau
Réponses
24
Affichages
1 K
Retour