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 :

[VBA-E] Changer un format de cellule


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 39
    Points : 17
    Points
    17
    Par défaut [VBA-E] Changer un format de cellule
    Re-bonjour,
    Juste une petite question, dans une même feuille, comment changer le format d'une cellule (la passer en gras et en souligné) si une autre cellule a été modifié :
    Merci

  2. #2
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 128
    Points : 12 185
    Points
    12 185
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Tu ne peux pas à partir d'une formule:
    Avec la mise en forme conditionnelle tu devrais trouver une piste...
    Sinon, il faut envisager une macro événementielle qui détecte la valeur avant et la compare par rapport à la valeur après et agit en conséquence sur la cellule à mettre en forme.

    Argy

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Juste une question : Comment comptes-tu la modifier, la cellule ? Manuellement ou par macro ?

    A+

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 39
    Points : 17
    Points
    17
    Par défaut
    Avec une macro !
    Je pensais faire une boucle sur les cellules que j'ai à tester, mais je ne sais pas comment m'y prendre, et surtout ou la placer ?
    Dans la feuille, dans un module, dans ThisWorkbook ?
    Merci d'avance .

  5. #5
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Salut!
    Je ne sais pas si c'est bien ce que tu veux faire, mais en mettant ce code dans la feuille de code associée à l'onglet où tu travailles:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Address = "$A$1" Then
            MsgBox ("Hello!")
        End If
    End Sub
    tu déclenches une macro lorsque la cellule A1 est modifiée.
    Si tu mets, à la place de mon "Hello!", une modification du format de cellule, ça peut ressembler à ce que tu cherches à faire.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 39
    Points : 17
    Points
    17
    Par défaut
    Oui, c'était tout à fait ce que je voulais faire !

    Mais je me rends compte en utilisant mon tableau, qu'il vaut mieux que je teste le contenu de la cellule A1, et non pas que je teste si elle a été modifiée.
    Par exemple, si A1 est vide, C5 ne change pas de format
    Mais si A1 n'est plus vide(quelque soit le contenu), C5 passe en gras.
    Et vice-versa.
    Merci. :

  7. #7
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Et ben, tu refais un test à l'interieur du test sur la cellule.
    Et tu regardes
    Si ça vaut ""; tu fais un truc, sinon, tu en fais un autre (j'ai pas trop suivi ta description...)

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 39
    Points : 17
    Points
    17
    Par défaut
    Oui, oui, j'étais déjà en train de bidouiller un truc du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Address = "$B$5" Then
            If Range("B5") = "" Then
                Range("C1").Font.Bold = False
                Range("C1").Font.Italic = False
            End If
            If Range("B5") <> "" Then
                Range("C1").Font.Bold = True
                Range("C1").Font.Italic = True
            End If
        End If
    End Sub
    Et ça me convient tout à fait.
    Y'a-t-il simplement un moyen de raccourcir le tout car j'ai pas mal de cellules à tester, et je voudrais ecrire le moins possible de code.
    Encore un petit truc, pour souligner du texte, c'est quoi l'instruction exacte après Font :
    Thank You.

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Si on te donne la réponse, la prochaine fois que tu auras à le faire, ou tu auras oublié ou il faudra que tu retournes sur le code que tu vas écrire.
    Pour ma part, je préfère que tu enregistres une macro, que tu soulignes du texte dans une cellule et que tu décortiques le code ----> F1, t'as essayé ? C'est magique !

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 39
    Points : 17
    Points
    17
    Par défaut
    Ca c'est vraiment une bonne idée !
    Sympa de m'y avoir fait penser.
    A pouët.

  11. #11
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Sinon, pour raccourcir ton code:
    - Tu peux remplacer tes 2 tests sur la valeur de la cellule par un seul, evec un "else", puisque les conditions sont opposées (il doit y avoir un terme plus juste, mais bon...);
    - D'après ton test, "Range("B5")", c'est justement "Target';
    - Pour réaliser ce test sur plusieurs cellules, crée une zone regroupant toutes les cellules à tester, puis mets ton code dans une boucle "For Each Cellule In MaZone..."

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 39
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par Megaxel
    - Pour réaliser ce test sur plusieurs cellules, crée une zone regroupant toutes les cellules à tester, puis mets ton code dans une boucle "For Each Cellule In MaZone..."
    Qu'est-ce que tu entends par créer une zone, car les cellules a tester ne sont pas adjacentes.
    Faut-il que je déclare une variable du style MaZone = A1,B12;L4, etc...

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 39
    Points : 17
    Points
    17
    Par défaut
    Merci pour le "Else", c'est déjà un peu mieux.

  14. #14
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Un petit truc qui n'a rien, mais alors vraiment rien à voir avec ce que tu veux faire:
    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
    16
    Sub Macro1()
    '
    ' Macro1 Macro
    ' Macro enregistrée le 06/02/2006 par PLASSEAL
    '
     
    '
        Range("F11,E7,C10,D15,E19,E23,F26").Select
        Range("F26").Activate
        ActiveWorkbook.Names.Add Name:="MaZone", RefersToR1C1:= _
            "=Feuil1!R11C6,Feuil1!R7C5,Feuil1!R10C3,Feuil1!R15C4,Feuil1!R19C5,Feuil1!R23C5,Feuil1!R26C6"
        Range("E23").Select
     
        Range("Mazone").Interior.ColorIndex = 6
     
    End Sub

  15. #15
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Sinon, tu peux aussi créer un tableau de cellules...

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

Discussions similaires

  1. [XL-2007] VBA changer de format d'une cellule
    Par james6006 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/02/2014, 08h34
  2. Changer le format des cellules dans différentes collonnes
    Par ChNoirhomme dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/01/2014, 04h43
  3. [AC-2003] Changer le format de cellules d'une feuille Excel
    Par bdcds dans le forum VBA Access
    Réponses: 1
    Dernier message: 09/06/2009, 17h18
  4. [VBA-E]Nombre de formats de cellule différents trop élevé
    Par Patrice740 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 19/09/2008, 11h09
  5. [VBA-E]changer le format d'une cellule dans un spreadsheet
    Par delamarque dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 13/02/2006, 11h12

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