Aide Valeurs ComboBox & Bouton [Résolu]

Signaler
Messages postés
53
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
31 mars 2008
-
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
-
Salut à tous,


Petite question de débutant


Quand je mets:


Private Sub ajouter_click()
Sheets("Forets HSS").Cells(1, 1).Value = ComboBox1.Value
Sheets("Forets HSS").Cells(2, 1).Value = ComboBox2.Value
End Sub

Et que je clique sur mon bouton: Cela m'affiche bien les valeurs indiquées par mes combobox dans les cellules demandée

Pourquoi lorsque je mets:

Private Sub ajouter_click()
Sheets("Forets HSS").Cells(ComboBox1.Value, ComboBox2.Value).Value = 1
End Sub

Cela ne fonctionne pas

Pourquoi?
Est-ce que quelqu'un peut m'aider?
Si toutefois il faut plus d'explications, n'hésitez pas.

merci

15 réponses

Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Tu commences ta première boucle à la ligne 12Donc, le premier item de ton combobox ligne 12 ListIndex 0
Même chose pour l'autre combobox qui concerne les colonnes de 6 à 9

Tu pourrais donc essayer comme ceci
Sheets("Forets HSS").Cells(comboBox1.Listindex +12, comboBox2.ListIndex + 6).Value = Variable

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
Salut,

les combobox renvois des valeurs au format string or la fonction cells fonctionne avec des valeurs  au format long,single ou integer. Donc tu dois convertir la valeur par une Clng pour, CSng pour single etc.

Private Sub ajouter_click()
Sheets("Forets HSS").Cells(Clng(ComboBox1.Value), Clng(ComboBox2.Value)).Value = 1
End Sub

Mais attention la valeur de ta combobox doit etre une valeur convertible un truc du style Clng("bob") ça ne marche pas !

A+
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
...

j'ai encore oublié de me relire , donc il fallait comprendre :

Donc tu dois convertir la valeur par une fonction du type : Clng pour long, CSng pour single etc.

A+
Messages postés
53
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
31 mars 2008

Ca ne fonctionne pas
????
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Que valent Combobox1.value et Combobox2.Value ?

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
J'aurais dû préciser aussi...
Comment sont chargés ces combobox ? d'où proviennent les données ?

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Messages postés
53
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
31 mars 2008

voici le code:

Private Sub userform_initialize()


Dim Ma_Liste As String
   Dim Col As Integer
   Dim Lig As Integer
   Col = 5
   For Lig = 12 To 131
      Ma_Liste = Sheets("Forets HSS").Cells(Lig, Col).Value
      Fenetre_de_Selection_Outils.ComboBox1.AddItem Ma_Liste
   Next Lig

Dim Mon_type As String
   Dim Col2 As Integer
   Dim Lig13 As Integer
   Lig13 = 11
   For Col2 = 6 To 9
      Mon_type = Sheets("Forets HSS").Cells(Lig13, Col2).Value
      Fenetre_de_Selection_Outils.ComboBox2.AddItem Mon_type
   Next Col2
  
End Sub

Private Sub CheckBox1_Change()

Select Case CheckBox1.Value
Case True: CheckBox1 = Sheets("Forets HSS")
End Select

End Sub




Private Sub ajouter_click()


    'MsgBox "Coucou"   MARCHE
    'Sheets("Forets HSS").Cells(Ma_Liste, Mon_type).Value = 1
    'Sheets("Forets HSS").Cells(ComboBox1.Value, ComboBox2.Value).Value = 1 FAUX
    'Sheets("Forets HSS").Cells(Lig, Col2).Value = 1 FAUX
    'Sheets("Forets HSS").Cells(1, 1).Value = 1 MARCHE
    'Sheets("Forets HSS").Cells(1, 1).Value = ComboBox1.Value MARCHE
    'Sheets("Forets HSS").Cells(1, 1).Value = ComboBox2.Value MARCHE


    'Dim Diam1 As String
    'Dim Typ2 As String
    'Dim ComboBox1 As String
    'Dim ComboBox2 As String
    'Sheets("Forets HSS").Cells(ComboBox1, ComboBox2).Value = 1 FAUX




    ' Sheets("Forets HSS").Cells(1, 1).Value = ComboBox1.Value MARCHE
    ' Sheets("Forets HSS").Cells(2, 1).Value = ComboBox2.Value MARCHE
    ' Sheets("Forets HSS").Cells(CSng(ComboBox1.Value), CSng(ComboBox2.Value)).Value = 1 FAUX


End Sub
 

Mon fichier Excel est constitué de plusieurs feuilles.
Pour l'exemple on va dire qu'il y en a que 2.("Forets HSS" et "Forets HSS revêtus")
Elles sont constituées d'un tableau E12 : I131

Le but de ce fichier est de constitué au final, une gestion des stocks de tous les outils
Pour cela j'ai creé une interface utilisateur par le biais d'un userform.

elle est constituée (de haut en bas et de droite à gauche)

- Cases à cocher : Forets HSS (Feuille "Forets HSS") et Forets HSS Revêtu (Feuille "Forets HSS Revêtus")
- Combobox 1: liste correspondant au ligne du tableau de chaque feuilles
- Combobox 2: au colonne
- Zone de texte: Quantité à renseigner par l'utilisateur
- Puis de bouton "ajouter" ou "retirer" du stock

Ce que je souhaite c'est que lorsqu'on coche la case Forets HSS par exemple, que cela se réfère au tableau de la feuille "Forets HSS".
Et Que lorsque que l'utilisateur entre sa quantité et clique sur le l'un des 2 boutons "ajouter" ou "retirer", que cela incrémente ou désincrémente automatiquement la bonne cellule du tableau en fonction du choix fait par le biais des combobox.


Voila ma question,


Est-ce quelqu'un peut m'aider à constituer ce code ? ? ?
MERCI
Messages postés
53
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
31 mars 2008

Desolé, j'ai oublié...La comboBox1 correspond aux lignes donc aux diametres.(Valeurs num de 1 à 12.9)
La comboBox2 corespond aux colonnes donc au types. ( Standart, Extra.....)
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Seulement cette dernière réponse aurait été suffisante...
Cells(1,1)= "Allo"  'ça, ça peut fonctionner
Cells("1.9", "Standard") = "Allo"  'là, ça ne va plus...

Je te laisse y cogiter....

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Messages postés
53
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
31 mars 2008

allez vas-y.
Expliques moi....c'est peut tout bete pour toi, mais moi j'apprends, donc ce serait sympa que tu ne me laisses pas cogiter j'ai testé beaucoup comme t'as pu voir dans le code...mais je vois vraiment pas.
merci a+
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Ben... tu cherches à mettre du texte en guise de paramètre à la fonction Cells(Ligne, Colonne) qui prend des entiers Long ou Integer. Tu ne peux pas y mettre "1.3" ou "standard". Il n'existe pas de ligne ou de colonne avec ces coordonnées.

Tu dois donc trouver une autre méthode.
Si chaque ligne de ta feuille = chaque ligne de ton Combobox (et dans le même ordre), tu pourrais utiliser la propriété ListIndex du ou des combobox.
EX: si le premier item du combobox (Index 0) = la 3e ligne, il te suffit d'additionner 3 au ListIndex pour connaître la ligne. Même chose pour les colonnes. Il s'agit seulement de position relative...

Autrement, il faudrait que tu te crées une procédure de recherche et soit boucler pour trouver la bonne valeur, soit utiliser la fonction Find pour la trouver. Une fois la valeur trouvée, il ne te reste qu'à incrémenter ou décrémenter la cellule voulue.

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Messages postés
53
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
31 mars 2008

Bah pourtant j'ai bien ma ligne "1.3" =  ligne 15 de la boucle:


Dim Ma_Liste As String
   Dim Col As Integer
   Dim Lig As Integer
   Col = 5
   For Lig = 12 To 131
      Ma_Liste = Sheets("Forets HSS").Cells(Lig, Col).Value
      Fenetre_de_Selection_Outils.ComboBox1.AddItem Ma_Liste
   Next Lig


et ma colonne "standard" = colonne F de la boucle:

Dim Mon_type As String
   Dim Col2 As Integer
   Dim Lig13 As Integer
   Lig13 = 11
   For Col2 = 6 To 9
      Mon_type = Sheets("Forets HSS").Cells(Lig13, Col2).Value
      Fenetre_de_Selection_Outils.ComboBox2.AddItem Mon_type
   Next Col2

Il n'existe pas de fonction permettant de trouver l'intersection de ces 2 boucles en fonction du choix fait par ces 2 comboBox????

Puis apres,

Private Sub ajouter_click()
Sheets("Forets HSS").Cells( choix comboBox 1, choix comboBox2).Value = Variable

Puis ensuite j'incremente cette variable....

Non???pas possible, si oui peux tu developper un peu plus comment tu ferais.

Merci
Messages postés
53
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
31 mars 2008

J'ai regarder l'aide sur Excel sur les ListIndex et les combobox:
le premier choix de la combobox est 0, le second 1 et ainsi de suite...

En l'occurence j'ai deux combobox: combobox1 pour les lignes 12 à 131 et Combobox2 pour les colonnes F à I

Mais je voudrais bien savoir comment on ecrit un tel code et comment il s'utilise.
Si on pouvais m'aider ca serait sympa.

merci
Messages postés
53
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
31 mars 2008

Je te remercie, ca fonctionne.

Je n'ai plus qu'à faire ma textBox pour indiquer la quantité souhaiter à ajouter ou retirer dans la bonne cellule.

Merci encore a+
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
39
pense au flag "réponse acceptée" sur la ou les réponses qui ont solutionné ton problème ;)