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 :

Code VBA ou formule pour copier des cellules avec mise forme [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Décembre 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2014
    Messages : 46
    Points : 30
    Points
    30
    Par défaut Code VBA ou formule pour copier des cellules avec mise forme
    Bonjour le forum,

    J'ai un classeur Excel composé de plusieurs onglets : Notice, Sortie, Partenaires, Arcachon, Gujan, Pessac.

    Dans l'onglet Partenaires, j'ai un ensemble de cellules (DM115P134) avec des valeurs et une mise en forme (couleur de remplissage de cellule, qui peut être de couleur différente, pour chacune de ces cellules).

    Le contenu des ces cellules est copié dans les autres onglets (sauf Notice et Sortie), dans les cellules (N2:Q21).
    Quand j'applique la formule "=DM115" dans la cellule N2, de l'onglet Arcachon, j'ai la valeur, mais je n'ai pas la mise en forme.
    Je recherche donc une macro ou une formule, qui me permettrait de copier les cellules avec la mise en forme.
    Si quelqu'un pouvait m'aider.
    Merci beaucoup

  2. #2
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    exemple pour arcachon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub ioi()
        ThisWorkbook.Worksheets("Partenaires").Range("DM115:DP134").Copy ThisWorkbook.Worksheets("Arcachon").Range("N2")
    End Sub

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Décembre 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2014
    Messages : 46
    Points : 30
    Points
    30
    Par défaut
    Bonjour joe.levrai,

    Merci beaucoup pour ton aide.

    A partir d'un bouton de commande, dans l'onglet Arcachon, pour effacer la copie des cellules (N2:Q21) avec la suppression de la couleur du fond et faire une RAZ de la feuille, j'ai écris le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Sub RAZ_Grille_Arcachon()
     
        Range("C18:I76, N2:Q21").Select
        Selection.ClearContents
        Interior.ColorIndex = xlColorIndexNone
        Range("24:78").EntireRow.Hidden = False
        Range("C18").Select
     
    End Sub
    Mais j'ai un message d'erreur : Erreur d'exécution '424' : Objet requis

    Pourrais-tu corriger le code pour que ça fonctionne.

    Il me semble que ça vient de l'instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        Interior.ColorIndex = xlColorIndexNone
    Parce que sans cette instruction ça fonctionne très bien. Et je ne suis pas très calé en VBA.

    Merci encore pour ton aide

  4. #4
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Interior est une propriété appartenant à un objet, ici c'est l'objet Range (une cellule ou une plage de cellules)

    l'erreur t'indique que tu ne fais pas référence à l'objet sur lequel tu manipules cette propriété

    d'ailleurs, tu utilises des mauvaises pratiques qui consistent :

    - à sélectionner une plage (parfaitement inutile)
    - travailler sur l'objet "Selection" (tout autant inutile)
    - ne pas mentionner la feuille sur laquelle se situe ta plage
    - ne pas factoriser les objets qui reviennent dans ta procédure, au travers d'un Bloc With/End With

    Par ailleurs, ClearContents nettoie le contenu uniquement (comme son nom l'indique) ... et vu que tu veux aussi nettoyer la couleur intérieure, utilise plutôt Clear qui efface vraiment tout le formatage

    voici un exemple qui corrige ça, faut juste mettre le nom de ta feuille sur la première ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub RAZ_Grille_Arcachon()
        With Worksheets("NomDeLaFeuille")
            .Range("C18:I76, N2:Q21").Clear
            .Range("24:78").EntireRow.Hidden = False
        End With
    End Sub

    Maintenant, il est également inutile de créer une procédure pour chaque feuille
    tu peux créer cette procédure standard (dans un module standard) et l'appeler depuis chaque bouton de tes feuilles.
    Là, il devient malin de ne plus mentionner la feuille dans la procédure, car par essence en cliquant sur un bouton tu es sur la feuille active où la procédure doit travailler
    D'autres mécaniques peuvent faire appel à un paramètre dans l'appel de la procédure mais ça ne me semble pas nécessaire

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Décembre 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2014
    Messages : 46
    Points : 30
    Points
    30
    Par défaut
    Bonjour joe.levrai,

    Merci beaucoup pour ton aide et les explications.

    Très bonne journée.

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

Discussions similaires

  1. [XL-2003] copier des cellules avec contenant des formules
    Par laurentSc dans le forum Conception
    Réponses: 13
    Dernier message: 17/11/2015, 23h14
  2. Réponses: 7
    Dernier message: 22/03/2011, 18h00
  3. [XL-2007] Bouton pour copier des cellules d'une feuille à une autre
    Par Samizarrad dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/03/2010, 16h27
  4. Code pour copier des cellules si elles respectent une condition
    Par octane dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 14/11/2008, 06h53
  5. Réponses: 2
    Dernier message: 02/08/2007, 12h30

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