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 pour le moment j'ai inscris du texte mais lorsque je vais remplir ma textbox il sera remplacer par des chiffres, un grand merci a toi je n'ai pas penser au simple couper coller de base , j'ai du laisser le cerveau sur l'orreiler ce matin mdr

je te rajoute les images et aussi

capture

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" afin de réduire mon espace entre mon image et mon trait gris

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"

capture 2 capture 3

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é j'essaye d'être le plus clair possible

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é

capture4

Bouton oui coché

capture 5png

Jusque là tout va bien

Ensuite je veux continuer de le coder pour que cela me fasse pareil sur mon feuillet

capture

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 ( en le mettant au dessus de mon code) en revanche sa me supprime complétement ma sélection ("A8:G10") 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

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. en tout cas merci de ton aide je test ça direct et je reviens vers toi pour confirmer si c'est bon ou pas

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

capture6

je voudrais également en faisant cette manipulation juste cacher le reste des cellules et remonter la barre grise

capture7

et les remettre en cliquant sur non

tableau excel

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

capture8

En cliquant sur Oui (bouton option 1)

capture9

Jusque là ça va sauf que mon userform ne cache plus mes textbox

capture10

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

capture11

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

capture12

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 j'espère que je vais y arriver

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

capture13 capture14

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

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

Rechercher des sujets similaires à "realiser macro masquer objets userform"