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 :

Problème avec combobox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 63
    Par défaut Problème avec combobox
    Bonjour,

    Voilà j'ai crée un userform avec deux combobox qui sont alimenté par une plage de donnée dans une feuille excel. ces données sont des chiffres elles sont donc censé être de type numérique. J'ai réalisé un programme permettant de venir récupérer des valeurs dans un tableau à partir des valeurs rentrées dans les combobox. En gros si je met 1.5 dans ma combobox il me trouve toute les valeurs 1.5 dans la colonne du tableau.

    Le problème que j'ai c'est que ceci fonctionne quand je rentre du texte dans mes cellules (toto) mais il ne parvient pas a trouver les valeurs numériques. Auriez vous une idée de comment remédier à ce pb?

    Je met 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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    Private Sub CommandButton8_Click()
     
    Sheet3.Rows("2:70").Delete
     
    iL2 = Sheet1.Cells(100, 2).Value
     
    n = 2
    ratio = ComboBox3.Value
    hubratio = ComboBox4.Value
     
    If ratio <> "" And hubratio <> "" Then
     
        For i = n To 160
        celluleratio = ("m" & i)
        cellulehubratio = ("k" & i)
     
        nomratio = Sheet5.Range(celluleratio).Value
        nomhubratio = Sheet5.Range(cellulehubratio).Value
     
         If nomratio = ratio Then
            If nomhubratio = hubratio Then
                Sheet5.Cells(i, "k").Copy Sheet3.Cells(iL2, 3)
                Sheet5.Cells(i, "m").Copy Sheet3.Cells(iL2, 4)
                Sheet5.Cells(i, "a").Copy Sheet3.Cells(iL2, 1)
             iL2 = iL2 + 1
            End If
         End If
        Next
     
    ElseIf ratio <> "" And hubratio = "" Then
     
        For i = n To 160
            celluleratio = ("m" & i)
     
            nomratio = Sheet5.Range(celluleratio).Value
     
             If nomratio = ratio Then
                Sheet5.Cells(i, "k").Copy Sheet3.Cells(iL2, 3)
                Sheet5.Cells(i, "m").Copy Sheet3.Cells(iL2, 4)
                Sheet5.Cells(i, "a").Copy Sheet3.Cells(iL2, 1)
                 iL2 = iL2 + 1
             End If
        Next
     
    ElseIf ratio = "" And hubratio <> "" Then
     
        For i = n To 160
               cellulehubratio = ("k" & i)
     
               nomhubratio = Sheet5.Range(cellulehubratio).Value
     
                If nomhubratio = ratio Then
                Sheet5.Cells(i, "k").Copy Sheet3.Cells(iL2, 3)
                Sheet5.Cells(i, "m").Copy Sheet3.Cells(iL2, 4)
                Sheet5.Cells(i, "a").Copy Sheet3.Cells(iL2, 1)
                    iL2 = iL2 + 1
                End If
        Next
     
    End If
     
    ComboBox3.Value = Empty
    ComboBox4.Value = Empty
    Sheet3.Select
     
    End Sub

  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,
    Ton problème réside dans le fait qu'une ComboBox, si je ne m'abuse, renvoie un String.
    Il faut donc convertir le contenu numérique de ta combobox en une variable de type numérique (Integer, Currency, Long, Double...)
    Pour cela, tu peux utiliser : CInt() CCur() CLng() CDbl() etc...
    Un peu comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim MaVar As Double
    MaVar = CDbl(ComboBox1)
    Attention toutefois!!! Si ton ComboBox est vide, CDbl va renvoyer une erreur d'incomptaibilité de type. Il te faut donc "biaiser"... Peut être comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim MaVar As Double
     
    If ComboBox1 <> "" Then
        MaVar = CDbl(ComboBox1)
    Else
        MaVar = 0
    End If

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 63
    Par défaut
    J'ai essayé ta solution mais je ne parviens pas a m'en sortir. J'ai rajouté ceci et mon début de code est désormais celui ci mais rien n'y fait à chaque fois il bugg ou ne me trouve aucune réponse.
    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
    Dim ratio As Double
     
    If ComboBox3 <> "" Then
        ratio = CDbl(ComboBox3.Value)
    Else
        ratio = 0
    End If
     
    Dim hubratio As Double
     
    If ComboBox4 <> "" Then
        hubratio = CDbl(ComboBox3.Value)
    Else
        hubratio = 0
    End If
     
     
    Sheet3.Rows("2:70").Delete
     
    iL2 = Sheet1.Cells(100, 2).Value
     
    n = 2
    'ratio = ComboBox3.Value
    'hubratio = ComboBox4.Value
     
    If ratio <> "" And hubratio <> "" Then
     
        For i = n To 160
        celluleratio = ("m" & i)
        cellulehubratio = ("k" & i)
     
        nomratio = Sheet5.Range(celluleratio).Value
        nomhubratio = Sheet5.Range(cellulehubratio).Value
     
         If nomratio = ratio Then
            If nomhubratio = hubratio Then
                Sheet5.Cells(i, "k").Copy Sheet3.Cells(iL2, 3)
                Sheet5.Cells(i, "m").Copy Sheet3.Cells(iL2, 4)
                Sheet5.Cells(i, "a").Copy Sheet3.Cells(iL2, 1)
             iL2 = iL2 + 1
            End If
         End If
        Next
    Est ce qu'il ne serait pas plus simple de convertir les données que je regarde dans mon tableau en string? Comment peut on faire ceci?

    merci

  4. #4
    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
    C'est la même démarche mais en convertissant les données des cellules dans une variable String :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim nomration As String, nomhubratio As String
        nomratio = CStr(Sheet5.Range(celluleratio).Value)
        nomhubratio = CStr(Sheet5.Range(cellulehubratio).Value)
    Tu pourras alors les comparer directement avec tes Combobox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If nomratio = ComboBox1 And nomhubratio = ComboBox2 Then

  5. #5
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 63
    Par défaut
    Super! Cà marche nickel comme çà. J'ai passé les cellules en string et c'est bon merci a toi en tous cas!!!

  6. #6
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 63
    Par défaut
    Bonjour,

    Je reviens vers vous car ce matin mon programme ne marche plus. Tout fonctionnait bien vendredi mais aujourd'hui quand je lance une recherche je ne parviens plus a otenir les résultats. Malgré la conversion des données en string. Je ne sais pas pourquoi. Je met mon code afin que vous puissiez voir si vous reperez une erreur.

    Mais là j'avoue ne pas comprendre.

    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    Private Sub CommandButton8_Click()
     
    Dim nomratio As String
    Dim nomhubratio As String
    Sheet3.Rows("2:70").Delete
     
    iL2 = Sheet1.Cells(100, 2).Value
     
    n = 2
    ratio = ComboBox3.Value
    hubratio = ComboBox4.Value
     
    If ratio <> "" And hubratio <> "" Then
     
        For i = n To 160
        celluleratio = ("m" & i)
        cellulehubratio = ("k" & i)
     
     
        nomratio = CStr(Sheet5.Range(celluleratio).Value)
        nomhubratio = CStr(Sheet5.Range(cellulehubratio).Value)
     
     
        'nomratio = Sheet5.Range(celluleratio).Value
        'nomhubratio = Sheet5.Range(cellulehubratio).Value
     
         If nomratio = ratio Then
            If nomhubratio = hubratio Then
                Sheet5.Cells(i, "k").Copy Sheet3.Cells(iL2, 3)
                Sheet5.Cells(i, "m").Copy Sheet3.Cells(iL2, 4)
                Sheet5.Cells(i, "a").Copy Sheet3.Cells(iL2, 1)
             iL2 = iL2 + 1
            End If
         End If
        Next
     
    ElseIf ratio <> "" And hubratio = "" Then
     
        For i = n To 160
            celluleratio = ("m" & i)
     
            nomratio = CStr(Sheet5.Range(celluleratio).Value)
     
             If nomratio = ratio Then
                Sheet5.Cells(i, "k").Copy Sheet3.Cells(iL2, 3)
                Sheet5.Cells(i, "m").Copy Sheet3.Cells(iL2, 4)
                Sheet5.Cells(i, "a").Copy Sheet3.Cells(iL2, 1)
                 iL2 = iL2 + 1
             End If
        Next
     
    ElseIf ratio = "" And hubratio <> "" Then
     
        For i = n To 160
               cellulehubratio = ("k" & i)
     
                 nomhubratio = CStr(Sheet5.Range(cellulehubratio).Value)
     
                If nomhubratio = hubratio Then
                Sheet5.Cells(i, "k").Copy Sheet3.Cells(iL2, 3)
                Sheet5.Cells(i, "m").Copy Sheet3.Cells(iL2, 4)
                Sheet5.Cells(i, "a").Copy Sheet3.Cells(iL2, 1)
                    iL2 = iL2 + 1
                End If
        Next
     
    End If
     
    ComboBox3.Value = Empty
    ComboBox4.Value = Empty
    Sheet3.Select
     
    End Sub
    merci

Discussions similaires

  1. [XL-2003] Problème avec ComboBox et TextBox
    Par Aphroditeuh dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 22/06/2009, 09h08
  2. Réponses: 3
    Dernier message: 09/09/2008, 01h20
  3. problème avec combobox
    Par reverse_engineer dans le forum Struts 1
    Réponses: 5
    Dernier message: 13/07/2008, 19h20
  4. Problème avec Combobox et XML
    Par gstephane dans le forum Flex
    Réponses: 0
    Dernier message: 20/01/2008, 12h59
  5. [AS2] Problème avec ComboBox lors création d'un composant perso
    Par aldo-tlse dans le forum ActionScript 1 & ActionScript 2
    Réponses: 12
    Dernier message: 24/05/2006, 18h51

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