VBA Excel : reproduire une mise en forme

Résolu
mikel831 Messages postés 237 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -

Bonjour,
Je souhaite reproduire la mise en forme d'une zone de cellules  Origine vers une autre zone de cellules Destination avec le bout de code suivant:
Sub Reproduire_MiseEnForme()
    Dim NJ, Origine, Destination As Range
    Set NJ = ActiveCell
    Set Origine = NJ.Offset(-1, 0) : NJ.Offset(-1, 8)
    Origine.Copy
    Set Destination = NJ : NJ.Offset(10,8)
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
End Sub

La ligne Set Origine bugue: j'ai certainement mal codé la zone origine à copier ?
C'est probablement idem pour pour la ligne Set Destination ... 


Windows / Chrome 123.0.0.0

2 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     

    bonjour,

    tu as pourtant déjà utiliser la fonction range(), l'as-tu oubliée?

    Set Origine = range ( NJ.Offset(-1, 0) , NJ.Offset(-1, 8) )
    1
  2. Bruno83200_6929 Messages postés 725 Date d'inscription   Statut Membre Dernière intervention   171
     

    Bonjour,


    Il semble que vous ayez quelques erreurs dans votre code au niveau de la définition des plages d'origine et de destination. Voici une version corrigée de votre code :

    Sub Reproduire_MiseEnForme()
        Dim NJ As Range, Origine As Range, Destination As Range
        
        'Définition de la cellule active comme point de départ
        Set NJ = ActiveCell
        
        'Définition de la plage d'origine (une cellule au-dessus et 8 colonnes à droite de NJ)
        Set Origine = NJ.Offset(-1, 0).Resize(1, 8)
        
        'Copie de la mise en forme de la plage d'origine
        Origine.Copy
        
        'Définition de la plage de destination (cellule active et 10 lignes en bas et 8 colonnes à droite de NJ)
        Set Destination = NJ.Offset(10, 8)
        
        'Collage spécial de la mise en forme dans la plage de destination
        Destination.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        
        'Désactivation du mode de copie
        Application.CutCopyMode = False
    End Sub
     

    Voilà.

    0
    1. mikel831 Messages postés 237 Date d'inscription   Statut Membre Dernière intervention   19
       

      Merci pour ta réponse!
      ça fonctionne correctement si j'écris : set Destination = NJ.Resize(10, 8)
      Cordialement, Mikel

      1