VBA Excel : reproduire une mise en forme

Résolu
mikel831 Messages postés 220 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23541 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

A voir également:

2 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 

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
Bruno83200_6929 Messages postés 608 Date d'inscription   Statut Membre Dernière intervention   126
 

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
mikel831 Messages postés 220 Date d'inscription   Statut Membre Dernière intervention   18
 

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

1