Réaliser une macro pour masquer des objets userform
Si ce sont des formules il faudra faire un 'vrai' couper-coller'
C'est quand tu veux pour déposer un fichier qu'on sache tout sans à avoir à poser des questions
eric
Bonjour ériiic ,merci de ta réponse
je te rajoute les images et aussi
mes partis de codes que j'ai essayer
Private Sub OptionButton1_Click()
'auto-entrepeneur oui
'
' masquer lignes si activer
If OptionButton1 = True Then
' masquer lignes si activer
TextBox10.Visible = False
Label9.Visible = False
TextBox11.Visible = False
Label11.Visible = False
TextBox12.Visible = False
Label12.Visible = False
TextBox13.Visible = False
Label13.Visible = False
End If
With Deplacement()
Range ("A9")
ActiveCell.Offset(-2, 0).Select
ActiveCell.Offset(0, 6).Select
SelectCells ("F9")
ActiveCell.Offset(-1, 0).Select
ActiveCell.Offset(0, 1).Select
If OptionButton1 = True Then
Range ("A9:G10")
RowsSelect.Visible = False
RowsSelect.Delete
End With
End Sub
Private Sub OptionButton2_Click()
'auto-entrepeneur non
'
' masquer lignes si activer
If OptionButton2 = True Then
' masquer lignes si activer
TextBox10.Visible = True
Label9.Visible = True
TextBox11.Visible = True
Label11.Visible = True
TextBox12.Visible = True
Label12.Visible = True
TextBox13.Visible = True
Label13.Visible = True
End If
End Sub
Lorsque je clique sur mon bouton 1 je voudrais masquer ce qui est surligner en jaune et déplacer mes 2 cellules bleus sous ma case Mail en "G7" et "G8"
et vu que c'est également lier automatiquement au bouton 2 , je voudrais que sa redevienne comme sur la photo automatiquement
Ensuite concernant mon userform , le carré de mon image je voudrais juste mettre un chemin d'accés uniquement (pour le moment) afin que chacun puissent mettre son image perso et aussi la faire apraraitre automatiquement sur le feuillet en remplacement de mon image " votre logo"
voici le code que j'ai essayer
Private Sub Image1_BeforeDragOver(ByVal Cancel As MSForms.ReturnBoolean, ByVal Data As MSForms.DataObject, ByVal X As Single, ByVal Y As Single, ByVal DragState As MSForms.fmDragState, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As Integer)
' Insertion_Image
Range("A1:C7").Select
Dim Rep As String, Fichier
Rep = CurDir$
ChDir "C:"
Fichier = Application.GetOpenFilename
ActiveSheet.Pictures.Insert(Fichier).Select
End Sub
Désoler pour le pavé
une fois que tout sera parametrer je souhaiterais rendre visible mon userform sur un feuillet ou sur un bouton de façon a qu'il soit facile d'accés même à un debutant
bon j'inclus également le fichier excel pour que cela soit plus simple
Teste ou nombre, aucune différence.
Et si tu testais ce que je t'ai proposé ?
En fait pour moi il n'y a aucun intérêt à modifier ta feuille.
Non seulement tu t'embêtes pour rien, mais en plus ce n'est pas ergonomique d'avoir les données qui se baladent. Un coup ici, un coup là, c'est ch...t.
eric
j'ai tester ton code, le problème est que dans mon bouton que j'ai coder pour masquer mes textbox dans mon userforms ,
je n'arrive pas a rajouter le code que tu ma donné en supplément de mon code ,pour que sa fasse aussi l'action sur le feuillet.
il faut que je remette un sub et end sub?
En fait je veux faire un en-tête personnalisable par chaque personne qui téléchargeras le document et du coup qui s'adapte au besoins de tout le monde
Bah, tu remplaces mon code par le tien pour le tester
eric
heu... c'est pas vraiment ce que je cherche à faire
Mon bouton option 1 est coder grace à ric
Private Sub OptionButton1_Click()
'auto-entrepeneur Oui
'
' masquer lignes si activer
If OptionButton1 = True Then
' masquer lignes si bouton activer
TextBox10.Visible = False
Label9.Visible = False
TextBox11.Visible = False
Label11.Visible = False
TextBox12.Visible = False
Label12.Visible = False
TextBox13.Visible = False
Label13.Visible = False
End If
End Sub
cela fonctionne sur mon userform
Bouton non coché
Bouton oui coché
Jusque là tout va bien
Ensuite je veux continuer de le coder pour que cela me fasse pareil sur mon feuillet
et la le probleme intervient , j'ai essayer plusieur choses soit sa bloque et je doit deboguer, et ya toujours des erreurs malgré tout
soit avec ton code sa marche ,
Private Sub OptionButton1_Change() Me.Height = 260 + 100 * OptionButton1.Value Range("G7") = Range("A9"): Range("A9").ClearContents Range("G8") = Range("F9"): Range("F9").ClearContents End Sub
enfin pas complétement sa déplace les cellules donc sa cest bon
du coup j'ai tester plusieurs codes que j'ai pu trouver rien n'y change je suis complétement perdu
voici les codes que j'ai essayer
'déplacer la cellule "A9" en "G8"
'déplacer la cellule "F9" en "G7"
Sheets("Feuil1").Select
Range("A9").Copy
Range.Paste ("G8")
[G8] = TextBox8
Range("F9").Copy
Range("G7").Paste
[G7] = TextBox9
ou bien
'Masquer zone de cellules de "A8" à "G10"
Range("A8:G10").Select
If SelectionValue.Visible = True Then
Mais encore
For Each S In Range(A8 :G10)
S.value=S.Visible = False
Next S
Et le dernier
Range("A8:G10").Activate
ActiveCell.CurrentRegion.Select.Visible = False
je ne sais plus quoi faire
heu... c'est pas vraiment ce que je cherche à faire
En tout cas c'est EXACTEMENT ce que tu as demandé...
en revanche sa me supprime complétement ma sélection ("A8:G10")
impossible avec ce que j'ai mis, tu mélanges tous tes essais
et si je clique sur mon bouton 2 ( le bouton Non) cela ne revient pas comme au début
comme si c'est effacer définitivement
Bien évidemment puisque ça n'était pas demandé.
Teste OptionButton1, si = true tu fais dans un sens, sinon dans l'autre.
eric
Merci désolé si je me suis mal exprimé, j'essaye de faire au mieux même si je suis pas toujours très clairs dans mes propos, c'est pour ça que j'illustre au max avec des images.
et si je clique sur mon bouton 2 ( le bouton Non) cela ne revient pas comme au début
comme si c'est effacer définitivement Bien évidemment puisque ça n'était pas demandé.
Teste OptionButton1, si = true tu fais dans un sens, sinon dans l'autre.
eric
bon j'ai copier le code dans les deux boutons pour le 1 j'ai fais dans un sens et pour le deuxième dans l’autre, cela fonctionne parfaitement
(j'ai inverser le chiffres des 2cellules "G" car je me suis trompé quand je t'ai donne leurs positions)
je te remercie grace à toi la manipulation fonctionne
je voudrais également en faisant cette manipulation juste cacher le reste des cellules et remonter la barre grise
et les remettre en cliquant sur non
Tu n'as pas besoin de 2 boutons, teste OptionButton1 comme je t'ai dit :
If OptionButton1 then
' copie dans un sens
else
' copie dans l'autre sens
endif
Et plutôt que de chercher à déplacer ta ligne 12 pour la remettre ensuite, contente-toi de masquer les lignes 10:11 :
Rows("10:11").Hidden = True
que tu rétablis avec =False
Avec l'avantage que tes références en-dessous restent toujours les mêmes si tu y mets des trucs.
Que tu peux intégrer au If Then Else du dessus
eric
Je te remercie je viens de tester ça
J'ai une partie de bon mais pas le else quand je clique sur non
je t'illustre ce que sa me fais et je te place mon code
Private Sub OptionButton1_Click()
'auto-entrepeneur Oui
'
' masquer lignes si activer
If OptionButton1 Then
' copie dans un sens
Range("G8") = Range("A9"): Range("A9").ClearContents
Range("G7") = Range("F9"): Range("F9").ClearContents
' masquer lignes Feuillet si bouton activer
Rows("9:10").Hidden = True
Else
' copie dans l'autre sens
Range("A9") = Range("G8"): Range("G8").ClearContents
Range("F9") = Range("G7"): Range("G7").ClearContents
' masquer lignes Feuillet si bouton activer
Rows("9:10").Hidden = False
' masquer lignes userbox si bouton activer
TextBox10.Visible = False
Label9.Visible = False
TextBox11.Visible = False
Label11.Visible = False
TextBox12.Visible = False
Label12.Visible = False
TextBox13.Visible = False
Label13.Visible = False
End If
End Sub
Private Sub OptionButton2_Click()
'auto-entrepeneur non
'
' Afficher lignes si activer
If OptionButton2 = True Then
' Afficher lignes si activer
TextBox10.Visible = True
Label9.Visible = True
TextBox11.Visible = True
Label11.Visible = True
TextBox12.Visible = True
Label12.Visible = True
TextBox13.Visible = True
Label13.Visible = True
End If
End Sub
Au démarage avant la manoeuvre
En cliquant sur Oui (bouton option 1)
Jusque là ça va sauf que mon userform ne cache plus mes textbox
Je clic maintenant sur non
Rien ne reviens à sa place cela reste comme si le bouton oui est activé
je clic sur oui pour verifier si sa reviens a sa place et la les 2 cellules que on a déplacer on disparue, bizarre
mais pas que , les lignes que on a masquer avec ta commande ne reviennent pas a leur place
Et le bas de mon userform ne c'est toujours pas masquer en recliquant sur oui
Rows("9:10").Hidden = True
Rows("9:10").Hidden = False
Je suis obliger de les tirer manuellement
Je pense refaire comme avant 1 code pour le bouton oui dans un sens et 1 code pour le bouton non dans l'autre
et je vais essayer avec une commande que tu ma donner dans le bouton Non
Rows("9:10").Hidden = False
Le If est en commentaire, il faut retirer l'apostrophe en début de ligne, il manque le Then après le True :
If OptionButton1 = True Then ... Else ... Endif
Une autre remarque :
les boutons d'option étant liés, si on clic sur le numéro 1 alors le numéro 2 n'est plus sélectionné et inversement.
Donc automatiquement si on se trouve dans la Sub du clic du bouton 1 c'est qu'il est TRUE :
Donc :
Private Sub OptionButton1_Click() 'auto-entrepeneur oui ' ' masquer lignes si activer TextBox10.Visible = False Label10.Visible = False TextBox11.Visible = False Label11.Visible = False TextBox12.Visible = False Label12.Visible = False TextBox13.Visible = False Label13.Visible = False End Sub
et l'inverse sur le clic du bouton 2
Private Sub OptionButton2_Click() TextBox10.Visible = True Label10.Visible = True TextBox11.Visible = True Label11.Visible = True TextBox12.Visible = True Label12.Visible = True TextBox13.Visible = True Label13.Visible = True End Sub
@ bientôt
LouReeD
Bonsoir,
c'est une chose de ne rien connaître et s'en est une autre de ne pas lire correctement ci qui a été écrit pour aider !
Fin de première page...
Après ce que dit eriiic est faisable car il utilise la procédure Change de l'option bouton plutôt que la procédure Clic.
La procédure clic n'est lue que lors du clic, la procédure change est lue lors d'un clic sur un autre option bouton du même groupe.
Donc soit deux comme ci dessus avec la procédure clic du bouton 1 et du bouton 2, soit un test de valeur du bouton 1 et un else pour faire l'inverse mais sur la procédure "change" du bouton 1.
Tester si le bouton option1 est "vrai" dans la procédure clic de celui-ci ça revient à dire la verdure verte !
@ bientôt
LouReeD
Je te remercie loreed j'ai bien compris que les boutons 1 et 2 sont lier
cest dupuis que j'ai rajouter le code avec l'option de eriiic que sa ma fait sa,
petit à petit j'avance , je cherche seul pendant un moment et quand je galère trop
je reviens demander de l'aide
Bon j'avoue pour le if je n'ai pas vu l'apostrophe effectivement sa plante de ce coter la je vais tester tout sa toutes ses modifications et je te dis
Pour compléter loureed, tu peux aussi te servir de l'état de l'optionbutton pour fixer celui des textbox et des 2 lignes :
Private Sub OptionButton1_Change()
'auto-entrepeneur Oui
'
' masquer/afficher textbox
TextBox10.Visible = Not OptionButton1.Value
Label9.Visible = Not OptionButton1.Value
TextBox11.Visible = Not OptionButton1.Value
Label11.Visible = Not OptionButton1.Value
TextBox12.Visible = Not OptionButton1.Value
Label12.Visible = Not OptionButton1.Value
TextBox13.Visible = Not OptionButton1.Value
Label13.Visible = Not OptionButton1.Value
' masquer/afficher lignes Feuillet si bouton activer
Rows("9:10").Hidden = OptionButton1.Value
' masquer lignes si activer
Rows("9:10").Hidden = OptionButton1.Value
' masquer lignes si activer
If OptionButton1 Then
' copie dans un sens
Range("G8") = Range("A9"): Range("A9").ClearContents
Range("G7") = Range("F9"): Range("F9").ClearContents
Else
' copie dans l'autre sens
Range("A9") = Range("G8"): Range("G8").ClearContents
Range("F9") = Range("G7"): Range("G7").ClearContents
End If
End Sub
Ca te divise par 2 tes lignes de codes pour ces actions.
(et réduire la hauteur du userform t'en ferait gagner 7)
OptionButton1_Click suffit puisqu'il change d'état que tu cliques sur l'un ou sur l'autre, ne rien mettre dans OptionButton2_Click
Prend l'habitude de bien indenter ton code, ça t'aide à détecter des erreurs.
eric
eriiic,
dans le cas d'un seul code en fonction de l'état de l'option bouton il faut la procédure :
OptionButton1_Change
en lieu et place du Click, sinon lors du clic sur le 2, il ne se passera rien...
@ bientôt
louReeD
eriiic,
dans le cas d'un seul code en fonction de l'état de l'option bouton il faut la procédure :
OptionButton1_Change
en lieu et place du Click, sinon lors du clic sur le 2, il ne se passera rien...
@ bientôt
louReeD
Super les gars sa fonctionne avec la formule de eriiic et en changeant le _Click par _Change comme à dis LouReeD
tout fonctionne à merveilles
j'ai compris mes erreurs j'ai pris des notes au fur et à mesures que vous m'aidiez.
Juste avant de cloturer le sujet je voudrais insérer une image dans mon userform pour la faire aparaitre dans mon feuillet.
enfin je m'explique je pense plutot mettre un chemin d'accés de base genre "C:/" dans vraiment définir de point de reception afin que chaque personne qui télechargera le documents puissent allez chercher son logo ou elle veut
j'ai regarder et rechercher dans le forum j'ai rien trouver de concret
j'ai trouver des bout de codes mais pas vraiment de chose qui peuvent m'aider
For Each S In Range(A8 :G10)
S.value=S.Visible = False
Next S
Range("A8:G10").Activate
ActiveCell.CurrentRegion.Select.Visible = False
Dim Cible As String
Private Sub Image1_Click()
ActiveSheet.Range("D10") = Cible 'Insert le chemin de l'image dans la cellule D10
End Sub
Private Sub TextBox1_Change()
' Répertoire des images (format jpg) de l'utilisateur Lambda
Cible = "C:\Users\Lambda\Images\" & TextBox1.Text & ".jpg"
On Error Resume Next
Me.Image1.Picture = LoadPicture(Cible)
End Sub
Private Sub UserForm_Initialize()
Me.TextBox1.Text = "Sapin01" ' 1 ière Image à afficher
End Sub
Dim NF
NF = Application.GetOpenFilename("Fichiers jpg,*.jpg")
If Not NF = False Then
Me.CHEMIN = NF
Me.Image1.Picture = LoadPicture(NF)
Me.Image1.PictureSizeMode = fmPictureSizeModeStretch
End If
Dim a
a = Application.GetOpenFilename("Fichier jpg;gif;bmp;tif,*.jpg ;*.tif;*.gif;*.jpg")
If a <> False Then CommandButton3.Picture = LoadPicture(a)
End Sub
voila ce que j'ai pu trouver JE crois qu'il manque des bouts de code
Pouvez vous m'indiquer la marche à suivre svp mais sans me donner le code j'ai envie de trouver seul , enfin en vous envoyant ce que j'ai fais et juste que vous me corrigier si jamais j'ai encore fais des erreurs .
Merci beaucoup pour votre aide vous etes super
Une fois ça coder je vous mettrais un lien afin que je le fichier soit controlé sur une autre machine
Encore miles merci à vous tous je continue mes recherches pour l'image et je vous post le fichier une fois termine
sa fonctionne avec la formule de eriiic et en changeant le _Click par _Change comme à dis LouReeD
il n'y a rien a changer dans la 'formule de eriiic' comme tu dis, puisque j'utilise l'événement Change depuis le début
Ah ouais, mais si il faut tenir compte des copiés des codes des autres ce n'est pas juste
Bon après il est 22h00 passé !
@ bientôt
LouReeD
- Messages
- 409
- Excel
- 365, Anglais
- Inscrit
- 07/03/2016
- Emploi
- Entrepreneur en construction
Bonjour,
pour ton logo
tu devrais créer un bouton de commande et y insérer ce code
On Error Resume Next ' si aucun fichier n'est sélectionné .. babye!
logo = Application _
.GetOpenFilename() ' tu peux aussi filtrer en ajoutant des formats de fichiers entre les parenthèses, fais des recherches!
Me.Image1.Picture = LoadPicture(logo) ' on charge l'image avec le chemin contenu dans la variable
Me.Image1.PictureSizeMode = fmPictureSizeModeStretch 'on redimenssione le logo afin qu'il s'adapte à la bonne dimension
'Insertion dans la feuille
Dim r As Range
Dim img As Picture
Set r = Sheets(1).Range("B3:C8") ' on choisi une plage SUR LA "PREMIÈRE FEUILLE" qui correspond au format de logo
Set img = Sheets(1).Pictures.Insert(logo)
With img
.ShapeRange.LockAspectRatio = msoFalse ' comme le format de ta plage n'est pas nécéssairement proportionnel au logo ..
.Top = r.Top
.Left = r.Left
.Width = r.Width
.Height = r.Height
End With
Sheets(1).Range("A1").Value = logo ' on conserve le chemin du fichier pour pouvoir l'avoir à la prochaine ouverture du formulaire
je ne sais pas trop si tu veux "revenir dans le formulaire avec le logo en place" sinon ........
Private Sub Userform_Initialize
logo_init = Sheets(1).Range("A1").Value
Me.Image1.Picture = LoadPicture(logo_init)
Me.Image1.PictureSizeMode = fmPictureSizeModeStretch
End Sub
En cellule A1 tu peux changer le format de cellule personnalisé en: ;;;
ce qui cachera le texte