checkbox et feuilles dans tableau en boucle

Neptune

XLDnaute Junior
Bonjour,

Je suis à nouveau bloqué!lol
je souhaiterai cette fois-ci gérer avec une boucle un programme en fonction de feuilles et de checkbox.

Je vous marque "en gros" ce que je veux faire mais ça ne fonctionne pas bien sûr.

Private Sub ActivateRackUsed()

Dim ref(2) As CheckBox
Dim sheet(2) As Sheets
Dim i As Integer


ref(1) = CheckBoxLF41A
ref(2) = CheckBoxLF42A

sheet(1) = LF41A
sheet(2) = LF42A

For i = 1 To 2

If ref(i).Value = True Then

derLigB = sheet(i).Range("B" & Cells.Rows.Count).End(xlUp).Row + 1
Set Plage = sheet(i).Name.Range("B5:B" & derLigB)

Sheets("RackUsed").Range("C6:C" & derLigB).Value = Plage.Value
Sheets("RackUsed").Range("C6:C" & derLigB).HorizontalAlignment = xlCenter

End If
Next
End Sub

Comment faire? Merci ...
 

Neptune

XLDnaute Junior
Re : checkbox et feuilles dans tableau en boucle

Bonjour,

Comment faire lorque j'ai plusieurs boutons?au final j'en aurai une dizaine tout en sachant que je peux cocher aléatoirement les checkbox!

J'ai mis un zip de l'exemple avec 4 boutons au lieu des 2.
 

Pièces jointes

  • Neptune_V2.zip
    40.4 KB · Affichages: 17

Gael

XLDnaute Barbatruc
Re : checkbox et feuilles dans tableau en boucle

Bonsoir Neptune,

En rajoutant des boutons, le code initial ne s'avère pas très pratique et avec beaucoup de redondances.

Dans la version ci-jointe, j'ai remplacé tout ça par un userform très simple et tu peux lui rajouter autant de Checkbox que tu veux en associant à chacune le libellé de la feuille correspondante. Il n'y a pas besoin de modifier le code puisqu'il s'exécute automatiquement sur l'ensemble des Checkbox.

Dis-moi si c'est OK.

@+

Gael
 

Pièces jointes

  • Neptune_V3.xls
    123 KB · Affichages: 49

Neptune

XLDnaute Junior
Re : checkbox et feuilles dans tableau en boucle

Parfait!
En fait ,il ne me reste plus qu'à renvoyer les systèmes choisis dans le USF dans la feuille pour avoir une visibilité permanente du choix établi. Je vois ça et si jamais je ne m'en sors pas, je me tournerai une nouvelle toi vers toi.
 

Neptune

XLDnaute Junior
Re : checkbox et feuilles dans tableau en boucle

Bonjour,

J'ai voulu modifié le USF en rajoutant des labels. Le problème est que maintenant le programme ne fonctionne plus,je pense que cela est dû au "for each ch in Controls".

Premier point:
Comment faire pour que le "ch" ne prenne pas en compte les Labels(actuellement j'en ai 14)?

Deuxième point:
Une fois le checkbox coché dans l'USF, je retourne son nom (LF41A, LF42A...)dans les cellules juste en dessous, (les uns en dessous des autres) du bouton qui permet de lancer l'USF.
Je ne comprends pas pourquoi il ne me les mets pas dans l'ordre.Je pensais que la boucle "for each ch in controls" commençait par le checkbox1, puis checkbox2 ect..(order de tabulations dans USF remis pourtant dans cet ordre).Ce n'est pas le cas car mon checkbox2 correspondant à MM41 est retourné en troisième au lieu d'être en second.

For Each ch In Controls
If ch.Name <> "OK" Then
If ch.Value = True Then
Sheets(ch.Caption).Visible = xlSheetVisible
Sheets("Result").Cells(i, 2).Value = ch.Caption
Sheets("Result").Cells(i, 2).Interior.ColorIndex = xlNone
Sheets("Result").Cells(i, 2).HorizontalAlignment = xlCenter
derligB = Sheets(ch.Caption).Range("B" & Cells.Rows.Count).End(xlUp).Row + 1
Set plage = Sheets(ch.Caption).Range("B5:B" & derligB)
ligfin = ligdep + plage.Rows.Count - 1
Sheets("RackUsed").Range("C" & ligdep & ":C" & ligfin).Value = plage.Value
Sheets("RackUsed").Range("C" & ligdep & ":C" & ligfin).HorizontalAlignment = xlCenter
ligdep = ligdep + plage.Rows.Count
i = i + 1
Else
Sheets(ch.Caption).Visible = xlSheetVeryHidden
Sheets("Result").Cells(i, 2).Clear
Sheets("Result").Cells(i, 2).Interior.ColorIndex = 19
i = i + 1

End If
End If
Next ch

L'idéal serait ensuite d'enlever les blancs qui sont entre eux!

exemple:
Je coche LF41A(=checkbox1), MM41(=checkbox2) puis RF42G(=checkbox5) et RF42S(=checkbox6).
LF41A sera donc en cellule B7, MM41 en B8 mais vu que les checkbox 3 et 4 ne sont pas cochés alors RF42G normalement en B11 sera retourné à la place du vide en B9 puis RF42S en B10.

Merci de votre aide
 

Gael

XLDnaute Barbatruc
Re : checkbox et feuilles dans tableau en boucle

Bonjour Neptune,

Les controles sont traités dans l'ordre des tabulations définies dans l'USF. En affichant la fenêtre propriétés, tu sélectionnes la première Checkbox et tu mets 0 dans le champ "Tabindex" puis 1 pour la deuxième etc...

Pour ne prendre en compte que les checkbox et pas les labels ou autres, il suffit de remplacer le premier test
Code:
If ch.Name <> "OK" Then
par
Code:
If ch.Name Like ("CheckBox*") Then
comme ça, il ne prendra que les Checkboxes.

pour supprimer les blancs entre les noms de feuilles, le mieux est d'effacer tout au départ et de n'écrire les noms que lorsque la case checkbox est cochée.

Code final pour la validation:

Code:
Private Sub OK_Click()
Dim ch As control, ligdep As Integer, ligfin As Integer
Dim derligB As Integer, plage As Range, i As Integer
Application.ScreenUpdating = False
ligdep = 6
i = 6
Sheets("Result").Range(Cells(i, 2), Cells(i + 15, 2)).Clear
Sheets("RackUsed").Range("C6:C" & Cells.Rows.Count).Clear
For Each ch In Controls
If ch.Name Like ("CheckBox*") Then
If ch.Value = True Then
Sheets(ch.Caption).Visible = xlSheetVisible
Sheets("Result").Cells(i, 2).Value = ch.Caption
Sheets("Result").Cells(i, 2).Interior.ColorIndex = xlNone
Sheets("Result").Cells(i, 2).HorizontalAlignment = xlCenter
derligB = Sheets(ch.Caption).Range("B" & Cells.Rows.Count).End(xlUp).Row + 1
Set plage = Sheets(ch.Caption).Range("B5:B" & derligB)
ligfin = ligdep + plage.Rows.Count - 1
Sheets("RackUsed").Range("C" & ligdep & ":C" & ligfin).Value = plage.Value
Sheets("RackUsed").Range("C" & ligdep & ":C" & ligfin).HorizontalAlignment = xlCenter
ligdep = ligdep + plage.Rows.Count
i = i + 1
Else
Sheets(ch.Caption).Visible = xlSheetVeryHidden
End If
End If
Next ch
Unload Me
Application.ScreenUpdating = True
End Sub

@+

Gael
 

Neptune

XLDnaute Junior
Re : checkbox et feuilles dans tableau en boucle

Bonjour Gael,

Cela ne fonctionne pas, je comprends pas pourquoi.Je retrouve toujours le message d'erreur suivant dès que je rajoute un label:

Run time error '9':

Subsciprt out of range

Sinon comment as tu fait pour insérer le fichier Neptune_V3(1).xls alors qu'il est >48.8Ko.Moi je suis limité à 48.8Ko!(limite forum)

Amic'
 

Gael

XLDnaute Barbatruc
Re : checkbox et feuilles dans tableau en boucle

Bonjour Neptune,

Ben oui, il y a aussi une partie initialisation qui va tester les feuilles actives pour positionner les checbox à "True" si la feuille est visible.

Donc, il faut aussi remplacer:

Code:
If ch.Name <> "OK" Then
par
Code:
If ch.Name Like ("CheckBox*") Then

Et il ne devrait plus y avoir d'erreur.

Et pour envoyer des fichiers de taille supérieure à 48K... il faut simplement devenir supporter XLD, ce n'est pas très cher, et ça supprime aussi la pub.
regarde le lien tout en haut du forum Excel, près de la charte.

@+

Gael
 

jeanpierre

Nous a quitté
Repose en paix
Re : checkbox et feuilles dans tableau en boucle

Bonjour Neptune, Salur Gael,

Neptune : Outre l'excellente indication de l'ami Gael, tu peux aussi Zipper ton fichier, il va diminuer de 6 ou 7 fois. (facile avec Windows, clic droit sur le fichier et Envoyer vers/Dossier compressé)

Bonne journée.

Jean-Pierre
 

Gael

XLDnaute Barbatruc
Re : checkbox et feuilles dans tableau en boucle

Salut Jean-Pierre,

Oui, tu as raison, mais XLD a besoin de supporters :)

Ta remarque est d'autant plus judicieuse que le fichier envoyé par Neptune au début de ce fil est dans un format que j'ai eu du mal à reconnaître et je ne lui ai pas signalé cette méthode de Zip toute simple.

@+

Gael
 

jeanpierre

Nous a quitté
Repose en paix
Re : checkbox et feuilles dans tableau en boucle

Re Gael,

Pour les formats différents j'utilise IZArc, uniquement pour la lecture mais pour la compression pas de souci non plus.

Gratuit, il reconnaît tous les formats (très utile).

Bon après-midi.

Jean-Pierre
 

Neptune

XLDnaute Junior
Re : checkbox et feuilles dans tableau en boucle

Hello,

J'ai bien rajouté la commande "If ch.Name Like ("CheckBox*") Then" vu que j'ai récupéré tout ton programme mais cela n'a rien changé. Sans les labels , ça fonctionne bien pourtant mais je veux mettre du titres dans l'USF.

Je zippe comme vous me le dites mais apparement mon fichier .zip n'est pas lisible alors que sur mon pc ça marche bien.

J'ai refais un .zip de la versoin modifiée avec le problème.

Merci
A+
 

Pièces jointes

  • Neptune_V3(1).zip
    30.9 KB · Affichages: 9

Neptune

XLDnaute Junior
Re : checkbox et feuilles dans tableau en boucle

Hello,
Effectivement jean pierre , il y a un "quick compress" que je n'avais jamais remarqué! j'utlise Winzip qui est juste en dessous. La compression est similaire.J'ai comparé avec un fichier.

A+
 

Gael

XLDnaute Barbatruc
Re : checkbox et feuilles dans tableau en boucle

Bonsoir Neptune,

C-joint la version corrigée... avec ce que j'avais déjà expliqué précedemment:

Les Tabindex sont à jour dans l'ordre des Checkbox.

La macro Userform_initialize est corrigée avec
Code:
If ch.name like "Checkbox*" then

Et tout marche bien.

@+

Gael
 

Pièces jointes

  • Neptune_V4.zip
    32.6 KB · Affichages: 11

Discussions similaires

Réponses
9
Affichages
117

Statistiques des forums

Discussions
312 859
Messages
2 092 884
Membres
105 549
dernier inscrit
LauraInfot