VBA Excel : reproduire une mise en forme

Résolu
mikel831 Messages postés 193 Date d'inscription mardi 23 octobre 2012 Statut Membre Dernière intervention 23 novembre 2024 - Modifié le 10 avril 2024 à 15:37
yg_be Messages postés 23405 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 décembre 2024 - 10 avril 2024 à 16:50

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 23405 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 décembre 2024 Ambassadeur 1 557
10 avril 2024 à 16:50

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 282 Date d'inscription jeudi 18 juin 2020 Statut Membre Dernière intervention 23 octobre 2024 57
10 avril 2024 à 16:05

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 193 Date d'inscription mardi 23 octobre 2012 Statut Membre Dernière intervention 23 novembre 2024 16
10 avril 2024 à 16:47

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

1