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 :

mettre en forme les cellule ( for each) [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 229
    Par défaut mettre en forme les cellule ( for each)
    Bonjour à tous,

    Je n'ai jamais vraiment utilisé de "for Each" et j'aimerai en utiliser pour mettre en place une mise en forme conditionelle sur une plage qui varie

    J'utilise ainsi ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim maplage as Range
    Dim C
    Dim der_ligne as Long
    Dim variable as Integer
     
     maplage = .Range(.Cells(11, 2) , .Cells(der_ligne, 2 + variable))
     
    For Each C In maplage
    C.NumberFormat = "0,000000"
    If C = 0 Then C.Font.Color = RGB(216, 216, 216)
     
    Next C
    Ce code ne fonctionne pas,
    en mode pas à pas, on remarque que "maplage= Nothing" et je n'arrive pas à trouver de solution

    Merci de votre aide
    Cordialement
    DoDo

  2. #2
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour,
    Pour attribuer une référence d'objet à une variable, il convient d'utiliser l'instruction Set :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim maPlage As Range
    Set maPlage = Range("A1:A10")
    'bla bla
    Set maPlage = Nothing
    Tu dis...

  3. #3
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut formats
    Bonjour le Forum, Bonjour Dodo69

    2 remarques:
    - Pour affecter une variable à un objet quel qu'il soit (Range, Sheet...), ton code d'affectation doit commencer par l'instruction Set

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim maplage as Range
     
    Set maplage = Range("A1:A10")
    - Il n'est pas nécessaire de balayer ta plage pour lui affecter un format. Tu peux affecter directement un format à un objet Range de plusieurs cellules.

    En règle générale, il vaut mieux éviter tant que possible de balayer les cellules d'un onjet Range.

  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
    13 176
    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 : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Tel que je vois ton code, je doute que tu aies pu le faire tourner.
    Tu devrais avoir rencontrer un message d'erreur.
    Les variables nommées der_ligne et variable étant égal à 0 ou alors tu déclares tes variables après qu'elles n'aient reçu une valeur ce qui est normalement impossible.
    [EDIT]
    Pour déclarer une variable objet, il faut faire utiliser l'instruction SET
    par exemple SET maplage = .range("A1:A5")
    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 éclairé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 229
    Par défaut
    Merci pour toutes vos réponse,

    En effet, c'est juste le manque de "set" qui m'empéchais de faire tourner ma macro.

    MarcelG, je ne vois pas comment je peux faire pour affecter le format directement à toute ces celulles sans les parcourir. Une indication ?

    corona, der_ligne et variable sont préalablement affectés d'une valeur, je n'ai pas mis tout mon module pour éviter d'alourdir le post, merci de ta proposition tout de même.

    Cdlt
    DoDo

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    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 : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    MarcelG, je ne vois pas comment je peux faire pour affecter le format directement à toute ces celulles sans les parcourir. Une indication ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub MEF()
      Dim maPlage As Range
      Set maPlage = ThisWorkbook.Worksheets("feuil1").Range("G8:H20")
      maPlage.Font.Color = RGB(100, 216, 216)
    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

  7. #7
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 229
    Par défaut
    Merci corona

    Mais avec ca, on peut faire une condition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     "if maplage=0 then...."
    ?

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    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 : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    On peut bien entendu faire précéder la Mise en forme d'une plage de cellules par une condition mais il est clair que si la mise en forme est différentes dans les cellules de cette plage suivant certaines conditions, tu es obligé de parcourir les cellules sauf si tu passes par une Mise en Forme conditionnelle sur l'ensemble de la plage.
    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

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

Discussions similaires

  1. Mettre en forme les balise <H1>
    Par gotcha5832 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 26/01/2010, 22h57
  2. Mettre en forme les données dans un formulaire
    Par hassany dans le forum IHM
    Réponses: 2
    Dernier message: 08/07/2009, 16h17
  3. Réponses: 4
    Dernier message: 12/05/2009, 10h58
  4. Réponses: 1
    Dernier message: 21/05/2008, 08h38
  5. Réponses: 2
    Dernier message: 07/05/2007, 16h46

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