Comment selectionner des cellules contigue ou non suivant des checkbox
Salut cher frère. je suis nouveau dans l'utilisation des codes vba. j'ai un problème mais j'arrive pas à trouver solution. si quelqu'un peut m'aider c'est un devoir à remettre. En fait, j'ai un userform qui comporte 36 checkbox nommé checkbox_1 à checkbox_36 et une base de données excel dont les entêtes font aussi 36 ; Je voudrais qu'à chaque fois que je coche un ou plusieurs checkbox de l'userform de façon aléatoire, les cellules correspondante (A1,B1.....AJ1) qui sont des entêtes soient sélectionnées suivant le nombre de checkbox coché. aidez moi . merci
Hello,
Une petite bidouille en vitesse
Private Sub CommandButton1_Click()
With UserForm1
compteur = 0
For i = 1 To 36 'Boucle sur tous les controls
If .Controls("CheckBox_" & i) = True Then compteur = compteur + 1 'On stocke le nombre de checkbox cochées dans une variable
Next
compteur2 = 0 'Deuxième compteur
For i = 1 To 36 'Boucle sur tous les controls
If .Controls("CheckBox_" & i) = True And compteur2 < compteur - 1 Then 'si Checkbox cochée + Compteur2 < nb checkbox cochées - 1
Plage = Plage & Sheets(1).Cells(1, i).Address + "," 'Definit la plage avec address + attends une autre address
compteur2 = compteur2 + 1 'compteur2 +1
ElseIf Controls("CheckBox_" & i) = True And compteur2 = compteur - 1 Then 'sinon si cochée + compteur2 = compteur-1
Plage = Plage & Sheets(1).Cells(1, i).Address 'ajout de l'adresse sans autre address derrière car dernière address
End If
Next i
End With
Range(Plage).Select
End SubR@g
superbe RAG c'est exactement ce que je voulais. tu m'as sauvé. merci infiniment. et si après avoir sélectionner je devrais exporter la selection en cours sur une nouvelle ou dans un nouveau classeur je ferai comment? excuse beaucoup pour le dérangement
Dans une feuille ça donne ça :
Private Sub CommandButton1_Click()
Dim Tableau As Variant
With UserForm1
compteur = 0
For i = 1 To 36 'Boucle sur tous les controls
If .Controls("CheckBox_" & i) = True Then compteur = compteur + 1 'On stocke le nombre de checkbox cochées dans une variable
Next
compteur2 = 0 'Deuxième compteur
For i = 1 To 36 'Boucle sur tous les controls
If .Controls("CheckBox_" & i) = True And compteur2 < compteur - 1 Then 'si Checkbox cochée + Compteur2 < nb checkbox cochées - 1
Plage = Plage & Sheets(1).Cells(1, i).Address + "," 'Definit la plage avec address + attends une autre address
Tableau = Tableau + Sheets(1).Cells(1, i).Value + ","
compteur2 = compteur2 + 1 'compteur2 +1
ElseIf Controls("CheckBox_" & i) = True And compteur2 = compteur - 1 Then 'sinon si cochée + compteur2 = compteur-1
Plage = Plage & Sheets(1).Cells(1, i).Address 'ajout de l'adresse sans autre address derrière car dernière address
Tableau = Tableau & Sheets(1).Cells(1, i).Value
End If
Next i
End With
Range(Plage).Select
i = 1
Dim arr() As String
arr = Split(Tableau, ",")
For Each element In arr
Sheets(2).Cells(1, i).Value = element
i = i + 1
Next
End Sub