Coller cellules dans autres feuilles quand CheckBox activé
Bonjour à tous,
Etant novice sur Excel je suis confronté à un problème que je n'arrive pas à résoudre. Je m'explique : j'ai un outil permettant de travailler sur N+2 années, ce qui représente 36 mois sur 36 feuilles. J'ai ainsi attribué des checkbox à chaques mois me permettant d'afficher ou non les mois désirés. Ensuite j'ai créé un userform permettant d'écrire dans certaines cellules en fonction de checkbox cochés sur le premier mois. Je voudrai ainsi créer un bouton à cocher permettant de copier les données écrites sur le premier mois sur tous mois sélectionnés donc affichés. Je pensai passer par mon onglet de stockage de données pour copier sur seulement les mois cochés mais je n'arrive pas à attribuer cette fonction.
Pour le moment je me suis soumis à écrire dans le tout premier mois (Janvier N) et de copier, sans boucle car je n'y arrive pas, sur tous les autres mois, c'est a dire en réécrivant sheets(janvier).select etc...
Si vous pouviez m'éclairer cela sera super !
Je vous remercie d'avance !
Bonjour Aurélien, bonjour le forum,
Ton énoncé est tellement imprécis !...
Pour t'aider il nous faut tester. Pour tester il nous faut recréer ton environnement. Pas envie... Fait toi l'effort de fournir un fichier exemple représentatif même s'il ne contient que deux ou trois onglets...
Bonjour,
En effet mon énoncé n'était pas très clair tout comme ce que voulais réaliser.
J'ai ainsi simplifier ma manière de procéder pour une gestion plus simple. Dans ce sens j'ai ainsi travaillé avec l'affichage ou non des lignes contenant mon texte plutôt que de l'écrire via les CheckBox. Ainsi dans mon bouton Janvier ouvrant l'userform Matériel, si les cases Grues X sont cochées ainsi les lignes apparaissent. Ce que je voudrai faire serait que la sélection faite dans l'userform s'applique à tous les mois (même non sélectionnés). En gros je ne l'ai fait que pour le mois X (ici janvier) mais je voudrais que cela s'applique pour tous.
Désolé j'ai du retravailler mon tableur car il contient les informations de mon entreprise... j’espère qu'avec les éléments que j'ai fait apparaître vous arriverez à m'aider
Re,
Pas sûr d'avoir bien compris...
Remplace l'intégralité du code de l'UserForm Matériel par :
Private Sub UserForm_Initialize()
CheckBox1.Value = Sheets("DATA").Range("B2") = 1
CheckBox2.Value = Sheets("DATA").Range("B3") = 1
CheckBox3.Value = Sheets("DATA").Range("B4") = 1
Me.TextBox1 = Sheets("Janvier").Range("A10")
End Sub
Private Sub CommandButton1_Click()
Dim I As Byte
Sheets("Janvier").Rows("7").Hidden = Not CheckBox1.Value
Sheets("DATA").Range("B2") = IIf(CheckBox1 = True, 1, 0)
Sheets("Janvier").Rows("8").Hidden = Not CheckBox2.Value
Sheets("DATA").Range("B3") = IIf(CheckBox2.Value = True, 1, 0)
Sheets("Janvier").Rows("9").Hidden = Not CheckBox3.Value
Sheets("DATA").Range("B4") = IIf(CheckBox3 = True, 1, 0)
Sheets("Janvier").Range("A10") = TextBox1
If Me.OptionButton1.Value = True Then
For I = 3 To Sheets(Sheets.Count)
Sheets(I).Rows("8").Hidden = Not CheckBox2.Value
Sheets(I).Rows("9").Hidden = Not CheckBox3.Value
Sheets(I).Range("A10") = TextBox1
Netx I
End If
End Sub
Private Sub CommandButton2_Click()
Unload Me
End SubRe,
Yes super c'est quelque chose dans cet esprit que je voulais ! J'avais une piste mais je n'arrivai pas a faire tourner correctement avec le "For I". Je vois mieux comment le faire marcher dorénavant.
Simplement j'ai du changer :
For I = 3 To Sheets(Sheets.Count)en :
For I = 3 To Sheets.CountCar sinon il me mettait une erreur.
Je te remercie grandement pour ton aide, cela m'a débloqué d'un problème sur lequel je pataugeais ! Merci de même pour avoir réorganiser le code intial
Juste pour ma culture général, à la fin des mois N+X j'ai trois onglets Bilans, pour les exclure j'ai simplement à faire
For I = 3 To Sheets.Count - 3??
Et dernière chose s'il te plait, si je voulais le faire mais sur seulement deux mois, par exemple Mars et Avril et que les autres mois ne seraient pas modifiés, cela serait possible ?
Merci beaucoup !
Re,
Simplement j'ai du changer :
For I = 3 To Sheets(Sheets.Count)en :
For I = 3 To Sheets.Count
Quel âne je suis. Bien vu.... . For I = 3 to Sheets.Count -3 est correct !
Voilà ce que le te propose pour n'agir que sur certains onglets :
For I = 1 To Sheets.Count
Select Case I
Case 3, 4 'cas ou tu veux que ça fonctionne (à adapter à ton cas)
Sheets(I).Rows("8").Hidden = Not CheckBox2.Value
Sheets(I).Rows("9").Hidden = Not CheckBox3.Value
Sheets(I).Range("A10") = TextBox1
End Select
Next IAh oui je vois super merci j'avais complètement oublié les Select Case !
Désolé j'ai encore besoin de ton aide.. je voudrai ne pas faire apparaître les lignes où mon TextBox écrit lorsque celles-ci sont vides. Pour le mois "Janvier" je n'ai pas eu de problème, je suis passé par un code simple en If,Then,Else :
If TextBox1.Value = "" Then
Sheets("Janvier").Rows("10").Hidden = True
Else
Sheets("Janvier").Rows("10").Hidden = False
End IfOr lorsque que je veux l'appliquer às mon option "Tous les mois" je n'arrive pas à passer par ça même si je remplace mon "Janvier" par I. J'ai donc cherché une solution avec IsEmpty ?
Sheets(I).Rows("10").Hidden = Not IsEmpty(Sheets(I).Range("A10"))Cela me fait bien disparaître la ligne 10 sur tous les onglets mais il ne se réaffiche pas en cas de texte...
J'ai de même essayé avec les Select Case lorsque tu m'as répondu mais je ne vois pas trop la structure que cela peut prendre...
Je te remercie d'avance si tu peux de nouveau me venir en aide !
Re,
Pas compris pourquoi la comparaison avec la TextBox1 était remplacée par la valeur de A10 ?!...
Peut être comme ça :
Sheets(I).Rows("10").Hidden = TextBox1.value=""ou comme ça :
Sheets(I).Rows("10").Hidden = sheets(I).Range("A10")=""Re,
Et bien en fait comme ma TextBox renvoie à ma cellule A10 je me suis dit si le TextBox est vide alors la case est vide donc peut être cachée, mais en effet c'est plus simple directement avec la case !
Ah oui tout simplement... j'ai voulu me compliquer la vie ahah !
Je te remercie pour ton aide, cela à solutionné mon problème je vais pouvoir avancer ! Merci et à bientôt !