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] Combobox colorier décolorier une ligne


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 9
    Par défaut [VBA-E] Combobox colorier décolorier une ligne
    Hello,

    Voilà je fais un logiciel de gestion de compte, j'ai donc un tableau avec 4 colonnes (date,intitulé,débit,crédit) et j'ai créé 2 boutons : 1 pour valider une opération, 1 pour invalider.

    1 opération valider voit sa ligne se mettre en vert, j'ai donc créé un userform avec une combobox contenant ttes les lignes non validé du tableau, mais le problème c'est que j'ai fait mon code avec listindex, et que j'ai des problèmes avec les offsets :/

    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
    Private Sub OK_Click()
    Dim i As Integer
    For i = 0 To 3
        debut_tableau.Offset(List.ListIndex, i).Interior.ColorIndex = 50
    Next i
    List.RemoveItem (List.ListIndex)
    List.ListIndex = 0
    End Sub
     
    Private Sub UserForm_Activate()
    Call init
    Dim cellule As Range
    List.Clear
        For Each cellule In Range(debut_tableau.Offset(0, 1), debut_tableau.Offset(nb_operation, 1))
            If cellule.Interior.ColorIndex = 15 Then
                List.AddItem (cellule.Offset(0, -1).Value & " " & cellule.Value)
            End If
        Next cellule
    End Sub
    Ma combobox est nommé : list

    Je dois aussi faire un userform avec une combolist contenant ttes les lignes du tableau validé pour les invalidé, mais j'aurais le meme problème.

    En gros mon code marche si aucune lignes n'a été validé déja lol.

    Je suis un peu perdu

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 9
    Par défaut
    Voilà 1 heure plus tard ce que j'ai modifié sans succès :

    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
    Private Sub OK_Click()
    Call init
    Dim memoire As Integer
    memoire = List.ListIndex
    Dim i As Integer
        For i = 0 To nb_operation
            If debut_tableau.Offset(i, 1).Interior.ColorIndex = 50 Then
                List.ListIndex = List.ListIndex + 1
            End If
        Next i
    Range(debut_tableau.Offset(List.ListIndex, 0), debut_tableau.Offset(List.ListIndex, 3)).Interior.ColorIndex = 50
    List.RemoveItem (memoire)
    List.ListIndex = 0
    End Sub
     
    Private Sub UserForm_Activate()
    Call init
    Dim cellule As Range
    List.Clear
        For Each cellule In Range(debut_tableau.Offset(0, 1), debut_tableau.Offset(nb_operation, 1))
            If cellule.Interior.ColorIndex = 15 Then
                List.AddItem (cellule.Offset(0, -1).Value & " " & cellule.Value)
            End If
        Next cellule
    End Sub
    Qqn aurait une idée ? plus j'avance plus mon esprit s'embrouille

  3. #3
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    je saisi mal ce que tu ve faire ... ? que doit faire ton bouton OK...?
    Tu ve 2 ComboBox dans l'une les opérations validées et dans l'autre les non validées puis deux boutons pour faire passer une opération d'une à liste à l'autre et vice/versa ... où autre chose ... ?

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 9
    Par défaut
    C'est vrai que je me suis mal exprimé :

    Pour faire simple on va dire que j'ai besoin d'une boite de dialogue contenant une liste de choix (combobox) et un bouton OK;

    Apres avoir choisi l'operation a validé ds la combobox, quand j'appuie sur OK il faudrait que la ligne du tableau se mette en vert;
    Donc la combobox contiendrait toutes les operations qui n'ont pas été déjà validé. (c'est ce qui me pose un problème pour le listindex et les offsets)


    Ma 2eme boite de dialogue fais le contraire, la combobox contient les opérations déjà validée, et le bouton OK servirait à invalider l'opération choisi (la ligne passerait de vert à gris quoi)

    J'espere m'être mieux exprimé

  5. #5
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    ta fonction init elle fait quoi ..?

    pour le principe tu peu stocker le numéro de ligne dans une 2° colonne (non-affiché ) de ta list box :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    If cellule.Interior.ColorIndex = 15 Then
      List.AddItem (cellule.Offset(0, -1).Value & " " & cellule.Value)
      List.List(List.ListCount - 1, 1) = cellule.Row 'Rajoute n° de ligne dans 2° colonne
     End If
    lors du clic sur ton bouton OK tu peu récupérer ce numéro ... par un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    iLg = List.list(ListIndex,1)...
    ...

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 9
    Par défaut
    Ma fonction init sert à repérer les cellules de mon tableau;

    Merci pour ta réponse je vais essayer ça (il faut que je comprenne le fonctionnement d'abord lol je suis encore débutant ^^)

Discussions similaires

  1. [VBA-E] Comment avancer d'une ligne quand la précedente est pleine ?
    Par Trooper2 dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 19/01/2007, 19h56
  2. [VBA Excel] Userform pour supprimer une ligne précise
    Par Viper7 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/06/2006, 14h32
  3. [VBA-E] cellules vide sur une ligne
    Par bricereyem dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 12/06/2006, 21h20
  4. [VBA-E] Copier et coller une ligne entiere
    Par DonKnacki dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 30/05/2006, 15h51
  5. [VBA-E]insertion automatique d'une ligne dans un tableau
    Par janus82 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 06/04/2006, 15h42

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