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 une couleur dans une cellule avec user form


Sujet :

Macros et VBA Excel

  1. #1
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut Mettre une couleur dans une cellule avec user form
    Bonjour à tous, j'ai un user form avec lequel les utilisateurs rentrent un certain nombre d'infos, et lorsque j'appuye sur le bouton OK, c'est info se mettent dans un tableau excel. Jusque la tout va bien.

    J'aurai voulu rajouté comme condition le fait que lorsque j'appuye sur OK, les cellules de la ligne que j'édite se metten en vert par exemple. J'ai essayé en commencant par mettre juste une cellule en vert et je n'y arrive déja pas. mon mode est le suivant:

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Private Sub OK_Click()
    Set cellule = Worksheets("Tableau de commandes 2008").Range("A5")
    
    Do While Not IsEmpty(cellule)
      Set cellule = cellule.Offset(1, 0)
    Loop
    
    cellule.Value = UserForm1.Emetteur.Value
    cellule.Offset(0, 1).Value = Date
    cellule.Offset(0, 2).Value = UserForm1.Ligne.Value
    cellule.Offset(0, 3).Value = UserForm1.Machine.Value
    cellule.Offset(0, 4).Value = UserForm1.Service.Value
    cellule.Offset(0, 5).Value = UserForm1.CentreDeFrais.Value
    cellule.Offset(0, 6).Value = UserForm1.Fournisseur.Value
    cellule.Offset(0, 7).Value = cellule.Row
    'cellule.Offset(0, 7).FormulaLocal = "=ligne()"
    
    Set cellule = Worksheets("Suivi").Range("H5")
    
    Do While Not IsEmpty(cellule)
      Set cellule = cellule.Offset(1, 0)
    Loop
    
    ActiveCell.Interior.ColorIndex = 15
    
    MsgBox "La saisie est términée!"
    
    End If
    End sub
    Merci après je voudrai que sa soit toute la ligne de mon tableau qui se mette en verte, je peut faire avec des

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cellule.Offset(0, 1).Interior.ColorIndex = 15
    cellule.Offset(0, 2).Interior.ColorIndex = 15
    cellule.Offset(0, 3).Interior.ColorIndex = 15....
    Mais je pense qu'on peut faire une sorte de chaine avec les diffénrentes colonnes concernées!

    Merci bcp à tous

  2. #2
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 121
    Points : 119
    Points
    119
    Par défaut
    salut,

    tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    activecell.entirerow.Interior.ColorIndex = 15

  3. #3
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    C'est marrant mais sa marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    activecell.entirerow.Interior.ColorIndex = 15
    ni

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    activecell.Interior.ColorIndex = 15
    Par contre si je remplca par exemple par:

    sa sa marche!

    Donc je sais pas c'est bizzard

    A mon avis sa vien du ActiveCell

  4. #4
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 121
    Points : 119
    Points
    119
    Par défaut
    essaie ça...

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    Private Sub OK_Click()
     
    Worksheets("Tableau de commandes 2008").Range("A5").select
     
    Do until activecell.value = ""
      activecell.Offset(1, 0).select
    Loop
     
    activecell.Value = UserForm1.Emetteur.Value
    activecell.Offset(0, 1).Value = Date
    activecell.Offset(0, 2).Value = UserForm1.Ligne.Value
    activecell.Offset(0, 3).Value = UserForm1.Machine.Value
    activecell.Offset(0, 4).Value = UserForm1.Service.Value
    activecell.Offset(0, 5).Value = UserForm1.CentreDeFrais.Value
    activecell.Offset(0, 6).Value = UserForm1.Fournisseur.Value
    activecell.Offset(0, 7).Value = cellule.Row
    'activecell.Offset(0, 7).FormulaLocal = "=ligne()"
     
    Worksheets("Suivi").activate
    Range("H5").select
     
    Do until activecell.value = ""
      activecell.Offset(1, 0).select
    Loop
     
    ActiveCell.Interior.ColorIndex = 15
     
    MsgBox "La saisie est términée!"
     
    End If
    End sub

  5. #5
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Ah ba sa sa marche!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cellule.Interior.ColorIndex = 15
    Mais comment faire sa sur une chaine de cellule par exemples les cellules de cette lignes sur les colonnes "A" "B" "C" "D" "E"?

    Merci

  6. #6
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 121
    Points : 119
    Points
    119
    Par défaut
    il est inutile d'utiliser les "set" avec ta variable "cellule"...

    dans l'exemple que je te donne, tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ActiveCell.Columns("A:E").Interior.ColorIndex = 15

  7. #7
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    En utilisant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cellule.Columns("A:AH").Interior.ColorIndex = 15
    Il commence en H et fini en AO il prend en fin de compte le H pour la colonne A!

    Est ce qu je peut y faire quelque chose pour lui dire que la A doit correspondre à la colonne A et nn à la colonne H?

    Merci

  8. #8
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Et quel est le code aussi pour lui dire que cette ligne que je vien de mettre en vert doit être de hauteur...

    Parce que avec ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Rows("53:53").RowHeight = 5.25
    Je ne cible qu'une ligen en particulier ici la ligne 53 mais pas la ligne sur laquelle je vien de mettre des cellules en gris!

    Merci

  9. #9
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Pour la ligne c'est OK j'ai trouvé il suffisait de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cellule.RowHeight = 5.25
    Merci quand même à ceux qui allé m'aidé

    Par contre j'ai pas eu de solution pour mon histoire de colonnes qui ne correspondent pas!
    Merci

  10. #10
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 121
    Points : 119
    Points
    119
    Par défaut
    dans la mesure où tu initialises ta variable cellule en A5 c'est a dire dans la 5e colonne, il te décale tout...

    moi, je changerais de programme et j'oublierais la variable cellule. Ceci te permettrait aussi de gérer tes hauteur de ligne de la meme façon...

  11. #11
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Oui mais changer de programmes il faudra que je le fasse pour tous mes documents mais cela va prendre du temps.

    Pour la hauteur de ligne j'ai trouvé c bon mais il doit il y avoir une solution toute simple pour lui dire de ce positionner en cellule A sur cette ligne la? nn?

    J'ai essayé différents codes mais sans succès:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cellule.Columns("A").Select
    ...

    Mais je n'arrive pas à trouver la bonne syntaxe.
    Une fois que je serais arrivé en A, le code suivant sera OK!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cellule.Columns("A:AH").Interior.ColorIndex = 15
    Je tiendré compte de ta remarque pour le changement de programme mais la dans l'immédiat je ne peut pas parce que je ne suis pas assez longtemps en entreprise mais à ma prochaine période je changeré la syntaxe de mes différents documents

    Merci

  12. #12
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 121
    Points : 119
    Points
    119
    Par défaut
    essaie d'initialiser ta variable "cellule" en :
    Worksheets("Tableau de commandes 2008").Range("A1")

    mais je pense qu'il y aura quand meme un décalage d'une colonne a chaque fois...

  13. #13
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Excuse moi mais sa veut dire koi initialise la?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Tableau de commandes 2008").Range("A1")

  14. #14
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 121
    Points : 119
    Points
    119
    Par défaut
    plutot que de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set cellule = Worksheets("Tableau de commandes 2008").Range("A5")
    fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set cellule = Worksheets("Tableau de commandes 2008").Range("A1")
    mais ça ne changera pas grand chose... il y aura toujours un décalage

  15. #15
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Non mais laisse tombé j'ai fait autrement et en + se ke tu me dit sa n'a pas de rapport mais c'est pas grave merci quand même pour tout le reste +++ et merci

  16. #16
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Comment faire pour attribuer à une cellule la valeur de la cellule de 2 cases au dessus +1?

    Merci

  17. #17
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Pour le momment j'ai marqué sa!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cellule.Offset(1, -1).Value = cellule.Value.Offset(-2, 0) + 1

  18. #18
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Pour en revenir à ta question initiale, ta variable cellule est un objet de type range tout comme ActiveCell. Tu peux en traiter les mêmes propriétés et lui appliquer les mêmes méthodes.

    Par contre, cellule ne deviendra pas miraculeusement la cellule active sans que tu la sélectionnes.

    Donc, tu pouvais écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cellule.Interior.ColorIndex = 15
    à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.Interior.ColorIndex = 15
    Pour modififer une propriété de toute une ligne, tu peux écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cellule.EntireRow.Interior.ColorIndex = 15
    Pour programmer proprement, il faut éviter, autant que possible, les .Select, .Activate, Selection et autre "ActiveQuelqueChose".

  19. #19
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Très curieux, chez moi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set cellule = Range("A5")
    cellule.Columns("A:AH").Interior.ColorIndex = 15
    grise bien la ligne 5 de A à AH.

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/03/2014, 12h05
  2. mettre un swf dans une iframe dans une page html
    Par petitevero dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 16/04/2011, 02h58
  3. Réponses: 3
    Dernier message: 07/08/2008, 13h19
  4. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  5. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13

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