Code pour copier une mise en forme automatiquement, correction svp

Zougoulou

XLDnaute Nouveau
Re bonjour tout le monde,

J'ai écris un code pour copier la mise en forme d'une feuille et la collée aux 95 autres.

Cependant il ne marche pas arrivé à :
Code:
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False

VB:
Sub Copie_mise_en_forme()
'

    Sheets("11480_20120813").Select
    Cells.Select
    Selection.Copy
    Dim Ws As Worksheet
   For Each Ws In ThisWorkbook.Worksheets
' Si le nom n'appartient pas à la liste entre guillemets
     If InStr(1, "Graph2 récap index_feuilles 11480_20120813", Ws.Name) = 0 Then
    Cells.Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    End If
Next Ws
End Sub

Ma question est donc, Pourquoi ne fonctionne t il pas et bien sure pouvez vous m'apporter votre aide ?

Question rhétorique ?
 

david84

XLDnaute Barbatruc
Re : Code pour copier une mise en forme automatiquement, correction svp

Bonjour,
lance l'enregistreur de macro et fait un copier-coller spécial valeur. Tu récupéreras ainsi le code qui fonctionne (que tu pourras par la suite épurer si besoin).
A+
 

Zougoulou

XLDnaute Nouveau
Re : Code pour copier une mise en forme automatiquement, correction svp

Pour un copier coller valeurs j'ai :

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Pour une reproduction de la mise en forme j'ai : (le meilleur résultat)

Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

Par contre, quand je supprime du code : Application.CutCopyMode = False

La macro fonctionne mais ne fait pas du tout ce que j'en attends...
 

Zougoulou

XLDnaute Nouveau
Re : Code pour copier une mise en forme automatiquement, correction svp

Euh !
La formule que je lis sur ton post staple1600 me fait mal à la tête...

J'ai pas le niveau pour tout comprendre !

Mais d'après moi ce serait ça qu'il faudrait prendre en compte :

VB:
With .Item(2).Resize(3)
            .FormulaR1C1 = "=R2C1+(ROW()-1)"
            .NumberFormatLocal = "jjjj j/m/aaaa"
            End With

Entre temps j'ai repris ma macro en la retravaillant et en regardant ce qui s'y passe pas à pas :

VB:
Sub Copie_mise_en_forme()
'
    'Selection de la feuille 11480_20120813
    Sheets("11480_20120813").Select
    
    'Selection de la colonne A
    Columns("A:A").Select
    
    'Copie de la sélection
    Selection.Copy
    
    'introduction de la variable feuille
    Dim Ws As Worksheet
         
         'Pour chaque feuille contenue dans le classeur
         For Each Ws In ThisWorkbook.Worksheets
        
        ' Si le nom n'appartient pas à la liste entre guillemets
             If InStr(1, "Graph2 récap index_feuilles 11480_20120813", Ws.Name) = 0 Then
                
                'Selection de la colonne A
                Columns("A:A").Select
                    
                    'Collage special du format
                    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
                     SkipBlanks:=False, Transpose:=False
                
                'Fin de la boucle if qui selectionne les feuilles intéressantes
                End If
           
           'Passage à la prochaine feuille
           Next Ws
           
 'Annule le mode copier et supprime la marque de selection
 Application.CutCopyMode = False
End Sub

Résultat -----> plus de bug mais elle ne copie pas la mise en forme dans les feuilles :-(

Je suis donc bloqué ici, limité par mon manque de connaissance qui m'empêche de voir des possibles erreurs ou omission dans le code ci dessus.
 

Staple1600

XLDnaute Barbatruc
Re : Code pour copier une mise en forme automatiquement, correction svp

Bonsoir

J'écris pourtant clairement les choses non ? ;)

C'est bien sur la macro a qui devait retenir toute ton attention !

Extrait de ce que j'avais écrit dans l'autre fil cité dans celui-ci
Sub MacroPOUR_TEST()
'macro servant juste à créer un exemple de modèle (donc macro à zapper par la suite, une fois le test fait)

Ensuite lancer la macro a
(c'est cette macro qu'il te faudra ensuite adapter à ta problématique)

C'est limpide, non ?

La macro a est à la fin du message (dans le fil cité) et d'ailleurs c'est seulement dans celle-ci qu'on voit apparaitre:
FillAcrossSheets, ce dont je parlais dans mon premier message :rolleyes:
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Code pour copier une mise en forme automatiquement, correction svp

Re

Je te remets la macro a ici dans ton fil (je suis trop gentil ;))
Sub a()
Dim arrWSN() As String, i%
'crée un tableau avec le nom de toutes les feuilles du classeur actif
ReDim arrWSN(1 To ActiveWorkbook.Sheets.Count)
For i = 1 To Sheets.Count
arrWSN(i) = Sheets(i).Name
Next i
'permet de recopier une plage de cellules définies issue d'une d'une feuille "MODELE"
'sur tous les feuilles d'un même classeur
Worksheets(arrWSN).FillAcrossSheets Worksheets("MODELE").Range("A1:B4") ' ici adapter l'adresse de la plage de cellules
End Sub

En échange, je te demanderai de chercher dans l'aide VBA, comment on spécifie une recopie du format uniquement

PS: Pour tester la macro, la lire attentivement et faire ce qui doit être fait avant de lancer.

 

Discussions similaires

Statistiques des forums

Discussions
312 581
Messages
2 089 910
Membres
104 303
dernier inscrit
Patdec