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 :

repport de combobox [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 20
    Par défaut repport de combobox
    Bonjour au forum
    J'ai un problème depuis 1 jour que je n'arrive pas à résoudre. Dans un USF, j'ai un combobox pouvant prendre 2 valeurs (Ajout et Suppr). Une fois que la valeur est prise, des textbox sont renvoyées sur une feuille.
    Voici mon code:
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    If ComboBox1.Value = "AJOUT" Then
        Sheets("duo").Select
        Range("c65536").End(xlUp).Offset(0, 0).Select
        ActiveCell.Offset(0, 1).Value = "AJOUT"
        ActiveCell.Offset(0, 2).Value = "EFF"
        ActiveCell.Offset(0, 5).Value = UserForm2.TextBox3.Value
        ActiveCell.Offset(0, 6).Value = UserForm2.TextBox4.Value
        ActiveCell.Offset(0, 7).Value = UserForm2.TextBox5.Value
        ActiveCell.Offset(0, 8).Value = UserForm2.TextBox10.Value
        With ActiveCell.Offset(0, 1)
            .Borders.Weight = xlMedium
        End With
        With ActiveCell.Offset(0, 2)
            .Borders.Weight = xlMedium
        End With
        End If
        If ActiveCell.Offset(0, 6).Value = "6b" Or ActiveCell.Offset(0, 6).Value = "6a" Or ActiveCell.Offset(0, 6).Value = "5c" _
        Or ActiveCell.Offset(0, 6).Value = "5b" Or ActiveCell.Offset(0, 6).Value = "5a" Or ActiveCell.Offset(0, 6).Value = "4" Then
        ActiveCell.Offset(0, 14).Value = "1"
        With ActiveCell.Offset(0, 14)
            .Borders.Weight = xlMedium
        End With
        End If
    
    If ComboBox1.Value = "SUPPR" Then
        Sheets("duo").Select
        Range("c65536").End(xlUp).Offset(0, 0).Select
        ActiveCell.Offset(0, 1).Value = "SUPPR"
        ActiveCell.Offset(0, 2).Value = "EFF"
        ActiveCell.Offset(0, 5).Value = UserForm2.TextBox3.Value
        ActiveCell.Offset(0, 6).Value = UserForm2.TextBox4.Value
        ActiveCell.Offset(0, 7).Value = UserForm2.TextBox5.Value
        ActiveCell.Offset(0, 8).Value = UserForm2.TextBox10.Value
        With ActiveCell.Offset(0, 1)
            .Borders.Weight = xlMedium
        End With
        With ActiveCell.Offset(0, 2)
            .Borders.Weight = xlMedium
        End With
        End If
        If ActiveCell.Offset(0, 6).Value = "6b" Or ActiveCell.Offset(0, 6).Value = "6a" Or ActiveCell.Offset(0, 6).Value = "5c" _
        Or ActiveCell.Offset(0, 6).Value = "5b" Or ActiveCell.Offset(0, 6).Value = "5a" Or ActiveCell.Offset(0, 6).Value = "4" Then
        ActiveCell.Offset(0, 14).Value = "0"
        With ActiveCell.Offset(0, 14)
            .Borders.Weight = xlMedium
        End With
        End If
    Or quelque soit la valeur de ma combobox, j'ai toujours la valeur 0
    Je ne sais pas où est le problème
    Merci de m'aider

  2. #2
    Membre confirmé Avatar de Maiden002
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2009
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2009
    Messages : 137
    Par défaut
    Bonjour,

    essaye comme sa, je n'ai pas tester si ton code marche, mais n'est il pas plus simple de tout intégrer dans un If ?

    tout d'abord savoir si la valeur est égal a AJOUT, et sinon égale a SUPPR

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    If ComboBox1.Value = "AJOUT" Then
        Sheets("duo").Select
        Range("c65536").End(xlUp).Offset(0, 0).Select
        ActiveCell.Offset(0, 1).Value = "AJOUT"
        ActiveCell.Offset(0, 2).Value = "EFF"
        ActiveCell.Offset(0, 5).Value = UserForm2.TextBox3.Value
        ActiveCell.Offset(0, 6).Value = UserForm2.TextBox4.Value
        ActiveCell.Offset(0, 7).Value = UserForm2.TextBox5.Value
        ActiveCell.Offset(0, 8).Value = UserForm2.TextBox10.Value
        With ActiveCell.Offset(0, 1)
            .Borders.Weight = xlMedium
        End With
        With ActiveCell.Offset(0, 2)
            .Borders.Weight = xlMedium
        End With
        If ActiveCell.Offset(0, 6).Value = "6b" Or ActiveCell.Offset(0, 6).Value = "6a" Or ActiveCell.Offset(0, 6).Value = "5c" _
        Or ActiveCell.Offset(0, 6).Value = "5b" Or ActiveCell.Offset(0, 6).Value = "5a" Or ActiveCell.Offset(0, 6).Value = "4" Then
        ActiveCell.Offset(0, 14).Value = "1"
        With ActiveCell.Offset(0, 14)
            .Borders.Weight = xlMedium
        End With
    
    Else
    
         If ComboBox1.Value = "SUPPR" Then
            Sheets("duo").Select
            Range("c65536").End(xlUp).Offset(0, 0).Select
           ActiveCell.Offset(0, 1).Value = "SUPPR"
           ActiveCell.Offset(0, 2).Value = "EFF"
           ActiveCell.Offset(0, 5).Value = UserForm2.TextBox3.Value
           ActiveCell.Offset(0, 6).Value = UserForm2.TextBox4.Value
           ActiveCell.Offset(0, 7).Value = UserForm2.TextBox5.Value
           ActiveCell.Offset(0, 8).Value = UserForm2.TextBox10.Value
           With ActiveCell.Offset(0, 1)
            .Borders.Weight = xlMedium
        End With
        With ActiveCell.Offset(0, 2)
            .Borders.Weight = xlMedium
        End With
        If ActiveCell.Offset(0, 6).Value = "6b" Or ActiveCell.Offset(0, 6).Value = "6a" Or ActiveCell.Offset(0, 6).Value = "5c" _
        Or ActiveCell.Offset(0, 6).Value = "5b" Or ActiveCell.Offset(0, 6).Value = "5a" Or ActiveCell.Offset(0, 6).Value = "4" Then
        ActiveCell.Offset(0, 14).Value = "0"
        With ActiveCell.Offset(0, 14)
            .Borders.Weight = xlMedium
        End With
        End If
    End If

  3. #3
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Ton code comporte pas mal de redondance
    Ci dessous le code modifié a tester

    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
    33
    34
     
     
    Sheets("duo").Select
    Range("c65536").End(xlUp).Offset(0, 0).Select
    ActiveCell.Offset(0, 1).Value = ComboBox1.Value
    ActiveCell.Offset(0, 2).Value = "EFF"
    ActiveCell.Offset(0, 5).Value = UserForm2.TextBox3.Value
    ActiveCell.Offset(0, 6).Value = UserForm2.TextBox4.Value
    ActiveCell.Offset(0, 7).Value = UserForm2.TextBox5.Value
    ActiveCell.Offset(0, 8).Value = UserForm2.TextBox10.Value
    With ActiveCell.Offset(0, 1)
        .Borders.Weight = xlMedium
    End With
    With ActiveCell.Offset(0, 2)
        .Borders.Weight = xlMedium
    End With
     
    If ActiveCell.Offset(0, 6).Value = "6b" Or ActiveCell.Offset(0, 6).Value = "6a" Or ActiveCell.Offset(0, 6).Value = "5c" _
        Or ActiveCell.Offset(0, 6).Value = "5b" Or ActiveCell.Offset(0, 6).Value = "5a" Or ActiveCell.Offset(0, 6).Value = "4" Then
     
            Select Case ComboBox1.Value
     
                Case "AJOUT"
                    ActiveCell.Offset(0, 14).Value = "1"
                Case "SUPPR"
                    ActiveCell.Offset(0, 14).Value = "0"
     
            End Select
     
    End If
     
    With ActiveCell.Offset(0, 14)
        .Borders.Weight = xlMedium
    End With

  4. #4
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    bonjour patrick60 Maiden002 jfontaine le forum
    je verrais bien comme cela pour simplifier a condition de changer le nom de la textbox 10 par textbox 6 vu que je fais une boucle!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim i As Byte, x As Long
    With Sheets("duo")
     x = .Range("c65536").End(xlUp).Row
     .Cells(x, 4) = ComboBox1: .Cells(x, 5) = "EFF"
    For i = 3 To 6
    .Cells(x, i + 5).Value = Controls("Textbox" & i).Value
    Next i
    If (.Cells(x, 9) = "6b" Or .Cells(x, 9) = "6a" Or .Cells(x, 9) = "5c" Or .Cells(x, 9) = "5b" Or .Cells(x, 9) = "5a" Or _
    .Cells(x, 9) = "6a" Or .Cells(x, 9) = 4) And ComboBox1 = "AJOUT" Then .Cells(x, 17) = 1 Else .Cells(x, 17) = 0
    End With
    aprés reflexion tu ecris toujours sur la méme ligne la derniere non vide en partant de la colonne C
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("c65536").End(xlUp).Offset(0, 0).Select
    normal pas normal????????????????
    quel est l'intêret de redéfinir Borders.Weigh a chaque demande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With ActiveCell.Offset(0, 2)
            .Borders.Weight = xlMedium
        End With
    je comprends pas bien ta démarche en régle general on definis des valeurs dans un user mais on en recopie a la suite donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("c65536").End(xlUp).Offset(0, 1).Select
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("c65536").End(xlUp) (2)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 20
    Par défaut
    bonsoir au forum et surtout milles excuses pour le retard.
    La solution de jfontaine me va très bien.
    Encore merci à tout le monde

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

Discussions similaires

  1. Multi-selection dans une ComboBox ?
    Par Moloko dans le forum MFC
    Réponses: 5
    Dernier message: 07/07/2021, 17h26
  2. [VB6] [Interface] ComboBox à plusieurs colonnes
    Par mtl dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 30/03/2004, 17h35
  3. [VB6] [Interface] Grille avec combobox
    Par khany dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 15/01/2003, 09h55
  4. combobox et readonly
    Par Mac leod dans le forum C++Builder
    Réponses: 6
    Dernier message: 28/11/2002, 10h27
  5. combobox->text
    Par clovis dans le forum C++Builder
    Réponses: 18
    Dernier message: 21/06/2002, 15h43

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