If ComboBox1 = 0 Then...?

Bonjour tout le monde,

J'ai un tableau Excel renseigné d'après ComboBox et CommandButton. Voici le code :

    
    Sheets("Feuil1").Activate
    Range("A1").Select
    Selection.End(xlDown).Select
    Selection.Offset(1, 0).Select
    ActiveCell = ComboBox1
    ActiveCell.Offset(0, 1) = ComboBox2
    ActiveCell.Offset(0, 2) = CDate(Format(Now, "dd/mm/yyyy"))
    ActiveCell.Offset(0, 3) = cbitem1.Caption
    ActiveCell.Offset(0, 4) = ComboBox3 * 1

Je souhaite que si ComboBox3 = 0 alors ne rien renseigner et passer à la suite ci-dessous :

    Range("A1").Select
    Selection.End(xlDown).Select
    Selection.Offset(1, 0).Select
    ActiveCell = ComboBox1
    ActiveCell.Offset(0, 1) = ComboBox2
    ActiveCell.Offset(0, 2) = CDate(Format(Now, "dd/mm/yyyy"))
    ActiveCell.Offset(0, 3) = cbitem2.Caption
    ActiveCell.Offset(0, 4) = ComboBox4 * 1

Et ainsi de suite. Je pense que la formule doit ressemble à If ComboBox3 = 0 Then... Else... pour la suite je ne suis pas assez expérimenté.

Par avance merci !

Bonjour,

Englobe ton code dans un test

Si c'est que la combobox est vide

if me.combobox3="" then

Si c'est que la est égale à 0

if me.combobox3=0 then
    Range("A1").Select
    Selection.End(xlDown).Select
    Selection.Offset(1, 0).Select
    ActiveCell = ComboBox1
    ActiveCell.Offset(0, 1) = ComboBox2
    ActiveCell.Offset(0, 2) = CDate(Format(Now, "dd/mm/yyyy"))
    ActiveCell.Offset(0, 3) = cbitem2.Caption
    ActiveCell.Offset(0, 4) = ComboBox4 * 1
end if

cdt

Bonjour ddetp88,

Merci pour ta réponse !

Je comprends la logique de ton code, si ComboBox3 = 0 alors on passe à la ComboBox4, mais si ComboBox4 = 0 aussi ?

J'ai besoin d'une réaction en chaîne jusqu'à ma dernière ComboBox, la 22. En clair qu'a chaque fois que c'est = 0 le code passe à la suite pour ne renseigner que les lignes quand ComboBox > 0

J'espère que je suis assez compréhensible ! Dis-moi si ce n'est pas le cas !

Est que tu peux joindre ton fichier?

Cdt

Re,

Il y a plein d'opérations sur le fichier pas encore opérationnelles et l'identité de plusieurs personnes, je préfère éviter (fastidieux d'en donner une version sans toutes ces données privées)

En fait ce que tu m'as donné comme solution est bon, c'est certain, seulement la condition que tu appliques à ComboBox3 doit être appliquée également à ComboBox4, 5, 6 (...), 22.

Quand ComboBox3 = 0 passer à ComboBox4, mais si ComboBox4 = 0 passer à ComboBox5, etc.

En fait, cette partie-là ne bouge jamais :

    
    Range("A1").Select
    Selection.End(xlDown).Select
    Selection.Offset(1, 0).Select
    ActiveCell = ComboBox1
    ActiveCell.Offset(0, 1) = ComboBox2
    ActiveCell.Offset(0, 2) = CDate(Format(Now, "dd/mm/yyyy"))

Il n'y a que ces deux dernières lignes qui changent (cbitem +1 et ComboBox +1) :

    ActiveCell.Offset(0, 3) = cbitem2.Caption 
    ActiveCell.Offset(0, 4) = ComboBox4 * 1

Si ComBox4 = 0, la même avec ComboBox5 si > 0, c'est à dire :

    ActiveCell.Offset(0, 3) = cbitem3.Caption 
    ActiveCell.Offset(0, 4) = ComboBox5 * 1

Désolé je ne facilite par forcément la tâche !

re,

Va faire un tour ici pour t'informer sur les contrôls. https://www.excel-pratique.com/fr/vba/controles

Il faut faire une boucle mais sans le fichier, il est difficile de t'aider.

pour te guider à intégrer dans ton code

For i = 1 To 22 ' boucle sur les combobox
    If Controls("ComboBox" & i) = True Then
        if Controls("ComboBox" & i).value=0 then
        ' ton code ....
        else
       'ton code....
      end if
   End if
 Next i

C'est tout ce que je peux faire pour toi.

Ciao

J'ai trouvé à force d'essayer, si quelqu'un intéressé, voici comment :

    Sheets("Feuil1").Activate
    Range("A1").Select
    Selection.End(xlDown).Select
    Selection.Offset(1, 0).Select
    If ComboBox3 > 0 Then
    ActiveCell = ComboBox1
    ActiveCell.Offset(0, 1) = ComboBox2
    ActiveCell.Offset(0, 2) = CDate(Format(Now, "dd/mm/yyyy"))
    ActiveCell.Offset(0, 3) = cbitem1.Caption
    ActiveCell.Offset(0, 4) = ComboBox3 * 1
    End If
    Range("A1").Select
    Selection.End(xlDown).Select
    Selection.Offset(1, 0).Select
    If ComboBox4 > 0 Then
    ActiveCell = ComboBox1
    ActiveCell.Offset(0, 1) = ComboBox2
    ActiveCell.Offset(0, 2) = CDate(Format(Now, "dd/mm/yyyy"))
    ActiveCell.Offset(0, 3) = cbitem2.Caption
    ActiveCell.Offset(0, 4) = ComboBox4 * 1
    End If
    Range("A1").Select
    Selection.End(xlDown).Select
    Selection.Offset(1, 0).Select
    If ComboBox5 > 0 Then
    ActiveCell = ComboBox1
    ActiveCell.Offset(0, 1) = ComboBox2
    ActiveCell.Offset(0, 2) = CDate(Format(Now, "dd/mm/yyyy"))
    ActiveCell.Offset(0, 3) = cbitem3.Caption
    ActiveCell.Offset(0, 4) = ComboBox5 * 1
    End If

Ceci permet de renseigner un tableau uniquement quand les ComboBox sont > 0

Le but : Faire l'économie de lignes et ignorer les données à zéro sur graphique croisé dynamique (sinon il y a des données à 0 qui prennent de la place pour rien)

Merci pour le coup de main !

Rechercher des sujets similaires à "combobox1 then"