[VBA - Excel] Histoire de boucle !

Résolu/Fermé
Tuc Messages postés 9 Date d'inscription mercredi 4 mars 2009 Statut Membre Dernière intervention 6 mars 2009 - 4 mars 2009 à 23:07
Tuc Messages postés 9 Date d'inscription mercredi 4 mars 2009 Statut Membre Dernière intervention 6 mars 2009 - 5 mars 2009 à 19:04
Bonjour,

Je débute en VBA et j'ai un petit problème technique.
Voici ma boucle :

Sub SupprimerParcelles_Click()
Dim Compteur As Integer
Dim Reponse As Integer

Compteur = 1

For Compteur = 1 To 20
    If CheckBox[Compteur].Value = True Then
        
        Reponse = MsgBox("Voulez-vous vraiment supprimer la parcelle " & [B4] & " ?", vbYesNo + vbQuestion + vbDefaultButton2, "Suppression de la parcelle")
        If Reponse = vbYes Then
            i = Compteur + 3
            Range("B[i]:F[i]").Select
            Selection.Delete Shift:=xlUp
            CheckBox[Compteur].Value = False
            Compteur = Compteur - 1
        Else
            CheckBox[Compteur].Value = False
            
        End If
        
    End If
Next Compteur


End Sub 





J'aimerai que les [Compteur] et [i] soient remplacés par les valeurs de Compteur et i qui changent à chaque tour de boucle.
Par exemple au premier tour de boucle, avoir CheckBox1.Value, au deuxième CheckBox2.Value

J'ai aucune idée de comment introduire la valeur du compteur pour change le numéro des CheckBox à chaque tour de boucle (et de même comment changer de ligne avec i).

Merci d'avance

Tuc
A voir également:

7 réponses

Tuc Messages postés 9 Date d'inscription mercredi 4 mars 2009 Statut Membre Dernière intervention 6 mars 2009
5 mars 2009 à 13:20
Re-bonjour,

J'ai trouvé un début de réponse :

CompteurBis = Compteur + 3
            CompteurBisB = "B" & CompteurBis
            CompteurBisF = "F" & CompteurBis
            Range(" & CompteurBisB:" & CompteurBisF).Select


J'ai vérifié que CompteurBisB me donne bien "B4" au premier tour mais je me tape une erreur avec la sélection de la plage (Range...)

Sinon pour les CheckBox j'ai pensé à un truc genre :

    
    CheckBoxCompteur = "CheckBox" & Compteur
    If CheckBoxCompteur.Value = True Then


Mais ça marche pas...pourquoi ????


Si quelqu'un peut m'aider ça m'arrangerai bien !

Tuc
0
Utilisateur anonyme
5 mars 2009 à 15:21
Bonjour,

Suggestion :

Sub SupprimerParcelles_Click()

    Dim Compteur As Integer
    Dim Reponse As Integer
    Dim i As Integer
    Dim strNomCheckBox As String
    
    Compteur = 1
    For Compteur = 1 To 20
        strNomCheckBox = "CheckBox" & Compteur
        If (Me.Controls(strNomCheckBox).Value = True) Then
            Reponse = MsgBox("Voulez-vous vraiment supprimer la parcelle " & [B4] & " ?", vbYesNo + vbQuestion + vbDefaultButton2, "Suppression de la parcelle")
            If Reponse = vbYes Then
                i = Compteur + 3
                Range("B" & i & ":F" & i).Select
                Selection.Delete Shift:=xlUp
                Me.Controls(strNomCheckBox).Value = False
                Compteur = Compteur - 1
            Else
                Me.Controls(strNomCheckBox).Value = False
            End If
        End If
    Next Compteur

End Sub
'


Lupin
0
Tuc Messages postés 9 Date d'inscription mercredi 4 mars 2009 Statut Membre Dernière intervention 6 mars 2009
5 mars 2009 à 17:15
Merci beaucoup ! Mais je me mange une petite erreur. Je suis sous Excel 2003. (ça vient peut-être de ça?)
Il aime pas "Me.Controls" à priori ! D'ailleurs je comprends pas cette fonction, mais ça avait l'air plutôt pas mal !

Imprime-écran de l'erreur en question :
https://www.hiboox.fr/


Merci encore pour ton aide !

Tuc
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
5 mars 2009 à 17:38
Bonjour, bonjour Lupin,
Pour travailler avec plusieur contrôles (genre indexé)
voir ici
Tu peu façilement remplacer TextBox par CheckBox.
A+
EDIT: si tes checkBox sont sur une feuille excel tu dis, la syntaxe est un peu différente.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Tuc Messages postés 9 Date d'inscription mercredi 4 mars 2009 Statut Membre Dernière intervention 6 mars 2009
5 mars 2009 à 17:49
Oui elles sont sur une feuille de calcul, en face de lignes que je veux pouvoir supprimer en cliquant sur un bouton "supprimer" qui est sensé supprimer les lignes cochées...

Tuc
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
5 mars 2009 à 17:53
A-tu regarder le lien ? Et a-tu compris le principe ?
Edit: Mais si tu supprime les cellules et qu'elles remonte... Tes CheckBox ne sont plus en face des lignes ?
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
5 mars 2009 à 18:00
Enfin, quoi qu'il en soit, un exemple pour passer en revue tout les CkeckBox de la feuil
Private Sub CommandButton21_Click()
Dim Obj As OLEObject
    'boucle sur les objets de la Feuil1
    For Each Obj In Sheets("Feuil1").OLEObjects
        'verifie s'il s'agit d'un CheckBox
        If TypeOf Obj.Object Is MSForms.CheckBox Then
            If Obj.Object.Value = True Then
               'Exemple d'action à effectuer si le CheckBox est coché.
               N = Val(Right(Obj.Name, 3)) + Lig1
               Rows(N).Hidden = True
            End If
        End If
    Next Obj
End Sub

Adapter le nom de la feuille.
A+
0
Tuc Messages postés 9 Date d'inscription mercredi 4 mars 2009 Statut Membre Dernière intervention 6 mars 2009
5 mars 2009 à 19:04
Ok merci beaucoup, je crois que je faisait fausse route, j'ai changé de tactique (> suppression des lignes via menu déroulant)

Tuc
0