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 :

affectation de l'objet intérior


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Programmeur en temps libre
    Inscrit en
    Février 2015
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Programmeur en temps libre
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 68
    Points : 139
    Points
    139
    Par défaut affectation de l'objet intérior
    Bonjour à tous,

    Ma recherche sur ce sujet à été infructeuse
    j'ai un problème avec l'utilisation de l'objet intérior, pourquoi ce code ne fonctionne pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test()
    Dim intérieur As Interior
        With Range("A1")
            Set intéireur = .Interior
        End With
     
        With Range("A2")
            .Value = "titi"
            .Interior = intérieur
        End With
    End Sub
    Actuellement je passe par la fonction copy de l'objet range.

    Merci pour vos réponses

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 843
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 843
    Points : 28 756
    Points
    28 756
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    L'objet Interior a des propriétés dont Color
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     Dim interieur As Interior
     Set interieur = Range("G2").Interior
     ' Lecture de la propriété Color de l'objet Interior
     Debug.Print interieur.Color
     ' Ecriture de la propriété Color de l'objet Interior
     Range("A12").Interior.Color = interieur.Color
    On peut aussi utiliser directement la propriété Color
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     Dim CouleurInterieure As Long
     CouleurInterieure = Range("G2").Interior.Color
     Debug.Print CouleurInterieure
     Range("A12").Interior.Color = CouleurInterieure
    ps : J'éviterais d'utiliser les accents dans le nom des variables.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre habitué
    Homme Profil pro
    Programmeur en temps libre
    Inscrit en
    Février 2015
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Programmeur en temps libre
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 68
    Points : 139
    Points
    139
    Par défaut
    Effectivement,

    donc si on veut recopier toutes les propriétés, il faut les recopier toutes une par une... et cela génère des erreurs ci celles-ci ne sont pas initialisées, la propriété gradient, par exemple.

    En plus, pour mon cas il faudrait que je fasse la même chose avec l'objet font.

    Je pense donc que je vais rester avec la méthode copy, au moins je suis sur de tout avoir.

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 843
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 843
    Points : 28 756
    Points
    28 756
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    En effet, au stade de mes connaissances en VBA pour excel, je ne vois pas comment attribuer l'ensemble des propriétés Format d'une cellule à une autre cellule ou plage de cellules autrement qu'en prenant les valeurs de chaque propriété de l'objet source vers l'objet cible ou en passant par un Copier/Collage Special Format
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub T1()
     Dim rng As Range
     Set rng = Range("A2")
     rng.Copy: Range("D2").PasteSpecial xlPasteFormats
     Application.CutCopyMode = False
    End Sub
    J'ai aussi cherché cette solution miracle de le faire en une seule instruction mais en vain. On peut effacer le format complet d'une cellule mais on ne peut pas l'attribuer (Je précise bien au stade de mes connaissances)
    Une autre solution est de faire une copie simple en effaçant ensuite le contenu mais évidemment ne peut s'appliquer aux cellules contenant déjà des valeurs (sauf en copiant au préalable leur valeur pour les recopier ensuite.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub T2()
     Dim rng As Range
     Set rng = Range("A2")
     rng.Copy Range("D2"): Range("D2").ClearContents
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre habitué
    Homme Profil pro
    Programmeur en temps libre
    Inscrit en
    Février 2015
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Programmeur en temps libre
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 68
    Points : 139
    Points
    139
    Par défaut
    Merci pour la réponse, très complète, et pour la confirmation de ce problème

    Je met ce post résolu

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

Discussions similaires

  1. [Spirit] Affectation d'un objet pour _val
    Par niarkyzator dans le forum Boost
    Réponses: 0
    Dernier message: 13/07/2010, 14h29
  2. POO affectation entre d'objet
    Par Jcpan dans le forum Langage
    Réponses: 1
    Dernier message: 27/05/2010, 22h49
  3. Affecter une variable objet à une autre variable objet
    Par CyberMen dans le forum VBA Access
    Réponses: 11
    Dernier message: 30/09/2008, 01h08
  4. Probleme d'affectation sur un objet ORACLE
    Par tykool dans le forum SQL
    Réponses: 1
    Dernier message: 13/04/2007, 10h06
  5. Réponses: 1
    Dernier message: 05/03/2007, 10h39

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