Création d'un bouton en boucle
Résolu
siamens_duj
Messages postés
212
Statut
Membre
-
diablo13800 Messages postés 3469 Date d'inscription Statut Membre Dernière intervention -
diablo13800 Messages postés 3469 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je débute en VBA et je suis bloqué sur un petit problème :
J'aimerais faire un code pour dire " Tant que la case D1, D2, D3 ... n'est PAS vide, créer un bouton" .
Je veux placer ces boutons à côté des cases D qui ne sont pas vide.
Normalement ce code, je pense aurait du le faire mais j'ai du commettre une erreur car cela ne fonctionne pas.
Merci pour votre aide.
Je débute en VBA et je suis bloqué sur un petit problème :
J'aimerais faire un code pour dire " Tant que la case D1, D2, D3 ... n'est PAS vide, créer un bouton" .
Je veux placer ces boutons à côté des cases D qui ne sont pas vide.
Normalement ce code, je pense aurait du le faire mais j'ai du commettre une erreur car cela ne fonctionne pas.
Private Sub CommandButton3_Click()
Do While Range("D").Value <> " "
Sub Macro()
ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _
, DisplayAsIcon:=False, Left:=370.5, Top:=114.75, Width:=72, Height:= _
24).Select
Selection.ShapeRange.IncrementLeft -39#
Selection.ShapeRange.IncrementTop -11.25
End Sub
End Sub
Merci pour votre aide.
3 réponses
-
Test avec ceci Ça peut marcher
ThisWorkbook.Activesheet("Feuil1").Range(D1;D900)
i=1
do While i<900
if thisWorkbook.activesheet("Feuil1").Cells(i;4).Value <> ""
ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _
, DisplayAsIcon:=False, Left:=370.5, Top:=114.75, Width:=72, Height:= _
24).Select
Selection.ShapeRange.IncrementLeft -39#
Selection.ShapeRange.IncrementTop -11.25
i=i+1
Else
End Sub
End If
Loop
End Sub-
-
-
-
Ok Celle-ci fonctionne correctement , a toi d'adapter Suivant le décalage Verticale que tu veux
Sub macroBouton()
i = 1
BLeft = 370.5
BTop = 114.75
BWidth = 72
BHeight = 24
Do While i < 900
If Cells(i, 4).Value <> "" Then
ActiveSheet.Buttons.Add(BLeft, BTop, BWidth, BHeight).Select
BTop = BTop + 11.25
i = i + 1
Else
MsgBox ("On est a la fin la")
GoTo Fin:
End If
Loop
Fin:
End Sub
N'oublie pas de rajouter un : Selection.OnAction = "Nom_De_La_Macro_A_Affecter" Si tu veux définir une action au clic des bouton:) et a supprimer le MsgBox qui indique la fin de la macro -
-
-
Bonjour,
Je pense que tu dois mettre ta boucle dans la macro et non à l'extérieur
Private Sub CommandButton3_Click()
Do While Range("D").Value <> " "
ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _
, DisplayAsIcon:=False, Left:=370.5, Top:=114.75, Width:=72, Height:= _
24).Select
Selection.ShapeRange.IncrementLeft -39#
Selection.ShapeRange.IncrementTop -11.25
Loop
End Sub
Essaie comme ça ( n'oublie pas le ctrl+ pause dans le cas ou ça boucle a l'infinie ) -
Merci pout cette réponse rapide !
comme ça ? :
Private Sub CommandButton3_Click()
Do While Range("D").Value <> " "
ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _
, DisplayAsIcon:=False, Left:=370.5, Top:=114.75, Width:=72, Height:= _
24).Select
Selection.ShapeRange.IncrementLeft -39#
Selection.ShapeRange.IncrementTop -11.25
End Sub
Là il me dit "Do sans boucle"