IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

copie de format


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif Avatar de babybell
    Homme Profil pro
    Retraité Bancaire
    Inscrit en
    Septembre 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Retraité Bancaire
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2008
    Messages : 495
    Points : 265
    Points
    265
    Par défaut copie de format
    Bonjour

    J'aimerai en une seule instruction réduire ce bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("D17").Copy
    ActiveCell.Cells.PasteSpecial Paste:=xlFormats
    mais je n'y arrive pas.

    Quelqu'un aurait-il une idée. Merci d'avance

  2. #2
    Membre habitué
    Inscrit en
    Juillet 2008
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 268
    Points : 130
    Points
    130
    Par défaut
    Bonjour,

    Il n'est pas possible d'avoir une seule instruction pour faire 2 actions élémentaires.
    Tu seras obligé de
    1. Copier
    2. Coller


    Que cherches-tu à faire exactement? Car ici tu copie-colles le format d'une cellule sur elle-même.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("D17").Copy
    ActiveCell.PasteSpecial Paste:=xlFormats

  3. #3
    Membre actif Avatar de babybell
    Homme Profil pro
    Retraité Bancaire
    Inscrit en
    Septembre 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Retraité Bancaire
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2008
    Messages : 495
    Points : 265
    Points
    265
    Par défaut
    Merci de ta réponse. Je voulais justement ne faire qu'une instruction, comme quand on copie le contenu d'une cellule. Mon code est dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    où je teste si je suis dans une certaine cellule.
    Je vais donc être obligé de mettre ces instructions dans un module, sinon, ca boucle plusieurs fois.

    dommage

  4. #4
    Membre habitué
    Inscrit en
    Juillet 2008
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 268
    Points : 130
    Points
    130
    Par défaut
    Je ne comprends pas ce que tu veux faire lorsque tu changes de feuille.

    Mais je pense que mettre le code dans un module ne changera pas le fond du problème.

    Explique-moi ce que tu cherches à faire, ce sera plus simple.
    Que veux-tu dire par
    ca boucle plusieurs fois.
    ?

  5. #5
    Membre actif Avatar de babybell
    Homme Profil pro
    Retraité Bancaire
    Inscrit en
    Septembre 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Retraité Bancaire
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2008
    Messages : 495
    Points : 265
    Points
    265
    Par défaut
    Quand j'exécute le code pas à pas, je constate que si je mets ces deux lignes dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Target.Column = 4 And Left(ActiveSheet.Name, 8) <> "Horaires" And Target.Column = 4 And Left(ActiveSheet.Name, 10) <> "9 Horaires" Then range(“D17”).copy: ActiveCell.Cells.PasteSpecial Paste:=xlFormats: Target(1, 2).Select
    l'instruction s'exécute un certain nombre de fois avant de passer à la cellule voisine.

  6. #6
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Target.Column = 4 Then
        If Left(Sh.Name, 8) <> "Horaires" And Left(Sh.Name, 10) <> "9 Horaires" Then
            Range("D17").Copy
            Application.EnableEvents = False
            Target.PasteSpecial Paste:=xlFormats
            Application.EnableEvents = True
            Application.CutCopyMode = False
            Target(1, 2).Select
        End If
    End If
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  7. #7
    Membre habitué
    Inscrit en
    Juillet 2008
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 268
    Points : 130
    Points
    130
    Par défaut
    Je crois avoir compris.
    En fait lorsque tu changes quelque chose sur ta feuille, le programme fait son boulot.
    Or le programme lui-même modifie quelque chose d'autre sur la feuille => il voit à nouveau qu'une modification est faite et donc refait son boulot et ainsi de suite.

    Mais tu peux heureusement stoper ses réactions le temps de la modification et reprendre son activité ensuite grâce à:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
        If Target.Column = 4 And _
        Left(ActiveSheet.Name, 8) <> "Horaires" And _
        Target.Column = 4 And _
        Left(ActiveSheet.Name, 10) <> "9 Horaires" _
        Then
            ActiveSheet.Range("F8").Copy
            
            Application.EnableEvents = False        
            ActiveCell.PasteSpecial Paste:=xlFormats
            Application.EnableEvents = True
            
            Target(1, 2).Select
        End If
    End Sub

  8. #8
    Membre habitué
    Inscrit en
    Juillet 2008
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 268
    Points : 130
    Points
    130
    Par défaut
    Arrrrgggghhhhh...

    T'es trop rapide mercatog

  9. #9
    Membre actif Avatar de babybell
    Homme Profil pro
    Retraité Bancaire
    Inscrit en
    Septembre 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Retraité Bancaire
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2008
    Messages : 495
    Points : 265
    Points
    265
    Par défaut
    Merci Mercatog, buzz73. Bonne soirée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. copie de format ims avec iebcopy
    Par c1myster dans le forum JCL - SORT
    Réponses: 6
    Dernier message: 18/02/2014, 10h20
  2. [XL-2000] Optimisation d'une copie de format/couleur
    Par a_centaure dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 20/12/2012, 12h53
  3. Réponses: 1
    Dernier message: 17/01/2010, 13h46
  4. [XL-2007] Copie de format de cellule en feuil1 et feuil2
    Par savary dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/04/2009, 06h41
  5. Réponses: 4
    Dernier message: 04/12/2003, 08h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo