Autres Macro avec Application union, je coince...

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 !

Christian0258

XLDnaute Accro
Bonjour à tout le forum,
Je souhaiterais votre aide sur cette macro qui doit copier deux zones, contenant des formules, et coller les valeurs sur ces deux mêmes zones.
Je précise que dans mon projet il y aura une douzaine de zones, mais le principe reste le même : copier et coller les valeurs afin d'écraser les formules.

voir fichier

Merci pour votre aide.
Bien amicalement,
Christian
 

Pièces jointes

Re, le forum, pierrejean,

Après essais, ça rame, avec un message "excel ne répond plus", puis ça reprend, mais c'est long...
ci-dessous la macro, pourriez-vous me dire...

Sub RemplaceFormuleParValeur()
Application.ScreenUpdating = False
Application.Calculation = xlManual
Dim r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, plageCopie As Range
Dim r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, plageColle As Range

Set r1 = Sheets("RECETTES").Range("J4:AD4")
Set r2 = Sheets("RECETTES").Range("J7:AD7")
Set r3 = Sheets("RECETTES").Range("J10:AD10")
Set r4 = Sheets("RECETTES").Range("J16:AD16")
Set r5 = Sheets("RECETTES").Range("J19:AD19")
Set r6 = Sheets("RECETTES").Range("J22:AD22")
Set r7 = Sheets("RECETTES").Range("J31:AD31")
Set r8 = Sheets("RECETTES").Range("J34:AD34")
Set r9 = Sheets("RECETTES").Range("J37:AD37")
Set r10 = Sheets("RECETTES").Range("J43:AD43")
Set r11 = Sheets("RECETTES").Range("J46:AD46")
Set r12 = Sheets("RECETTES").Range("J49:AD49")

Set plageCopie = Union(r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12)
For Each cel In plageCopie
cel.Value = cel.Value
Next

Set r13 = Sheets("RECETTES").Range("J4:AD4")
Set r14 = Sheets("RECETTES").Range("J7:AD7")
Set r15 = Sheets("RECETTES").Range("J10:AD10")
Set r16 = Sheets("RECETTES").Range("J16:AD16")
Set r17 = Sheets("RECETTES").Range("J19:AD19")
Set r18 = Sheets("RECETTES").Range("J22:AD22")
Set r19 = Sheets("RECETTES").Range("J31:AD31")
Set r20 = Sheets("RECETTES").Range("J34:AD34")
Set r21 = Sheets("RECETTES").Range("J37:AD37")
Set r22 = Sheets("RECETTES").Range("J43:AD43")
Set r23 = Sheets("RECETTES").Range("J46:AD46")
Set r24 = Sheets("RECETTES").Range("J49:AD49")

Set plageColle = Union(r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24)
For Each cel In plageColle
cel.Value = cel.Value
Next

Application.ScreenUpdating = True
Application.Calculation = xlAutomatic
End Sub

Merci pour votre aide. Christian
 
Bonjour,

Tu as plutôt intérêt à faire par plages entières plutôt que cellule par cellule, surtout si tes plages sont plus importantes en réalité :
VB:
Sheets("ESSAI").Range("A1:B2")=Sheets("ESSAI").Range("A1:B2").value
Et si tu les déclares dans un tableau r() , tu peux le faire par une boucle sur chaque plage :
Code:
    Dim r(1 To 2) As Range, i As Long
    Set r(1) = Sheets("ESSAI").Range("A1:B2")
    Set r(2) = Sheets("ESSAI").Range("C3:D4")
    For i = 1 To 2
        r(i).Value = r(i).Value
    Next i
eric

Edit : ah ben ça se confirme 🙂
 
Re, le forum pierrjean, eriiiic, mapomme
Merci pour votre aide. ça fonctionne mais pas la première fois… j'ai erreur" définie par l'application ou l'objet" le débogage pointe la ligne, je réinitialise et après ça fonctionne???.

la macro dans mon fichier ;
Sub RemplaceFormuleParValeurPrixRECETTES()
Const Plages = "J4:AD4,J7:AD7,J10:AD10,J16:AD16,J19:AD19,J22:AD22,J31:AD31,J34:AD34,J37:AD37,J43:AD43,J46:AD46,J49:AD49"
Dim xPl
For Each xPl In Split(Plages, ",")
Sheets("RECETTES").Range(xPl) = Sheets("RECETTES").Range(xPl).Value
Next xPl
End Sub

Merci pour votre aide,
Christian
 
- 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
40
Affichages
3 K
Retour