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 !