boite de dialogue

crapounet

XLDnaute Junior
Bonjour

J'ai créé une boite de dialogue avec 3 boutons

je voudrais faire en sorte que si je cliques sur bt 1, il imprime la feuille 1
si 2 feuille 2 et si 3 feuille 3

J'aimerai pouvois créer une copie de mon fichier à l'aide d'un bouton 4 que je n'ai pas créer encore.


Merci de votre aide précieuse

A+
 

Pièces jointes

  • forum.xls
    14.5 KB · Affichages: 83
  • forum.xls
    14.5 KB · Affichages: 75
  • forum.xls
    14.5 KB · Affichages: 75

crapounet

XLDnaute Junior
Re : boite de dialogue

j'avance, j'avance

J'ai trouver pourquoi il ne voulais pas m'importer mon userform1, car il y avait déjà un userform1 ouvert, je l'ai trouver, mais je ne sais pas l'effacer.

J'ai repris mon fichier ou il n'y étais pas, donc j'ai importer l'userform1, maintenant je n'arrive pas à le fvoir lorsque je suis en VBA et mode création.

Quelqu'un peux-il me donner la procédure pour afficher l'userform.

Ou autre solution comment copier des feuilles d'un classeur vers un nouveau, sans mettre l'adresse du fichier d'orrigine.

si je fait copier une feuille imm1 de mon fichier originel vers forum4 il me mets ldans la cellule le nom du fichier d'origine puis le nom de la feuille.

Le nom de la feuille je doit la garder mais je ne veux pas du non du fichier.

merci de votre aide
 

JYLL

Nous a quitté
Repose en paix
Re : boite de dialogue

Bonjour Crapounet,

As tu regardé ma réponse d'hier ?

Autrement pour exporter ou importer une Userform il faut:
- Aller dans VB "ALT" + F11
-Cliquer Bouton gauche de la souris sur la UserForm dans l'explorateur de projet
_Cliquer sur "Exporter un fichier" et répondre "oui" ou "Non" pour sauvegarder cette partie.
Pour importer: Cliquer "Fichier" "importer fichier" et à l'aide de l'explorareur qui s'ouvre cliquer sur le fichier désiré qui à une extension .frm si c'est une Userform et sur "OK". La Userform va se retrouver dans le classeur avec son code.

je te joins les fichiers qui concernent ta UserForm. qui comporte le code et la userForm

Pour Copier une feuille d'un classeur dans un autre.
- tu ouvres tes deux classeurs
- tu vas dans dans "Fenêtre" "Réorganiser " et tu séléctionnes "Horizontal"
-Tu cliques gauche souris sur le nom de l'onglet que tu veux copier dans l'autre classeur et sans relâcher ton bouton tu dépaces ta feuille dans le classeur en mettant l'onglet à coté des autres onglets et ta feuille est copiée.
- Si tu appuies en même temps sur "CTRL" la feuille est copiées d'un classeur dans l'autre et sans la touche elle est enlevée du premier et copiée dans le deuxième.

La technique avec le "CTRL" enfoncé est valable aussi pour dupliquer une feuille dans un même claseur en appuyant sur "CTRL" + "Bouton gauche souris" et en se déplacant en fin de liste d'onglet et relachabt en premier le bouton de la souris. Si la première feuille s'appelle "Feuil1" la copie portera le nom de "Feuil1(2)" et il est possivle de la renomer Faile pour faire un calendrier . Si plusieurs feuilles sont sélectionnées en cliquant sue la première, en enfançant la touche "MAJ" et cliquant sur la dernière, toutes les feuilles sont sélectionnées et si on applique la méthode de copie avec "CTRL" toutes les feuilles seront dupliquées et elle garde la mise en forme. Si vous écrivez dans la cellule "A1" "TOTO" toutes les feuilles sélectionnées aurant ""Toto" en "A1" idem si vous changez de polices , de mise enforme etc...

Bon test et je suis là pour d'autres explications. autrement si tu n'y parviens pas contacte moi par courrier privé pour me donner ton adresse et si ton fichier n'est pas confidentiel tu pourras me l'envoyer je te le mettrai à jour avec explications.

Bon test.
 

Pièces jointes

  • Forum4.zip
    1.3 KB · Affichages: 14
Dernière édition:

bqtr

XLDnaute Accro
Re : boite de dialogue

Bonjour crapounet, JYLL

Notre ami avance, mais moi j'avoue faire du sur place.
Dans un message je lui ai expliqué comment exporter/importer un userform.
D'aprés ce qu'il a répondu, il sait le faire.

JYLL, c'est un click droit sur le userform pas un gauche ;)

Pour supprimer un userform :

J'ai trouver pourquoi il ne voulais pas m'importer mon userform1, car il y avait déjà un userform1 ouvert, je l'ai trouver, mais je ne sais pas l'effacer.

Dans l'explorateur de projet, click droit sur le userform concerné et dans le choix proposé tu as "Supprimer UserForm..."

Tu dis :

J'ai repris mon fichier ou il n'y étais pas, donc j'ai importer l'userform1, maintenant je n'arrive pas à le fvoir lorsque je suis en VBA et mode création.

Si l'exportation/importation s'est bien déroulée, normalement tu dois avoir le userform1 dans ton fichier.

Donc comme le dit JYLL, soit tu lui envoies ton fichier où tu le mets en PJ.
S'il est trop lourd, tu laisses juste une ou deux feuilles.

Bonne soirée
 

JYLL

Nous a quitté
Repose en paix
Re : boite de dialogue

Bonsoir Btqr et le Forum,

Confusion clic gauche - Clic droit de mémoire, c'est tout simplement que la main droite à le pouce à gauche et la main gauche le pouce à droit alors on si perd.

Bonne soirée.
 

crapounet

XLDnaute Junior
Re : boite de dialogue

Merci beaucoup pour votre préssieuse aide

J'y suis enfin arriver.

J'avais deux problèmes c'est que Userform était déjà mis et je ne parvenais pas a le supprimer car je ne le voyais mais avec l'explorateur de projet cela devient plus facile lol

le deuxième il falais que je mette toutes la procédure dans la feuille concernées.

Maintenant c'est nikell, grace à vous.

Maintenant je voudrais rajouter un bouton supplementaire pour imprimer une autre feuille "Relevé je vais mettre a la suite :

Private Sub Relevé_Click()
Sheets("Relevé").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
End Sub

mais pour créer le bouton supplementaire comment dois-je faire.

Je ne trouve pas la boite a outil de userform1

Merci de votre aide
 

bqtr

XLDnaute Accro
Re : boite de dialogue

Re,

Content pour toi que tu t'en sorte.
Dans l'explorateur de projet, double click sur ton userform pour l'afficher dans la partie droite de l'écran.
Ensuite dans le menu "affichage", click sur le menu "boite à outils" qui sera accéssible.
Tu n'as plus qu'a séléctionner le bouton en cliquant dessus et à mettre le curseur de la souris sur l'userform à l'endroit désiré et à clicker une dernière fois.

Bonne soirée
 
Dernière édition:

JYLL

Nous a quitté
Repose en paix
Re : boite de dialogue

Bonsoir Crapounet et le Forum,

Tu peux tout simplement copier un des bouton en le selectionnnant et faisant "CTRL" +"C" et tu le colles en faisant "CTRL" + "V" .

Tu peux agrandir la hauteur de Userform en cliquant dessus et en venant en bas tu auras une flêche double, tu cliques sur le souris et sans relâcher tu tires vers le Bas.
Tu places le bouton où tu veux.
Puis dans les propriètés du bouton tu vas dans celle qui s'appelle "Name" et tu mets "Relevé" sans les guillements
Puis dans celle qui se nomme "Caption" et tu mets (Impression "Relevé") par exemple.
Maintenant tu double cliques sur ce bouton et tu vas te retrouver dans le code du bouton avec le code en noir :
Code:
Private Sub Relevé_Click()
[COLOR="Red"]    Sheets("Relevé").Select
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True[/COLOR]
End Sub
Tu ajoutes ce qui est en rouge.
Voila la manip est terminée. J'espère être assez explicite, sinon je reviendrai.

Bon test.
 

crapounet

XLDnaute Junior
Re : boite de dialogue

Merci beaucoup Jyll

C'est parfait, j'ai rajouté des boutons d'impressions et cela marche nickel

Je suis trop content lol

Maintenant j'ai un nouveau petit problème

Dans mon fichier, à la fin de chaque mois je dois mettre les données "a jours" et les faire passées en données du mois précédent ( elles deviennent anciennes)

Avec l'aide du forum on est arriver à ça (qui fonctionne très bien) en voici un extrait :

Range("H8:H11").Select
Selection.Copy

Range("G8").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Range("H22:H25").Select
Selection.Copy

Range("G22").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Range("H36:H39").Select
Selection.Copy

tout ceci est repris dans Sub TransfertAncienIndex()

Donc j'ai créé un bouton intitulé "nouveau"
et j'ai rajouter a fonction ceci

Private Sub Nouveau_Click()
Dim Réponse As String

'Demande l'autorisation d'effectuer le transfert d'index
'-------------------------------------------------------
Réponse = InputBox("Etes-vous sûr de vouloir faire cette opération (O/N) ?", "IMPORTANT")
If Réponse <> "o" And Réponse <> "O" Then
Exit Sub

'Effectue le transfert d'index
'-----------------------------
Else
Call TransfertAncienIndex
BoutonTransfert.Enabled = False
End If

End Sub

Sub ActiveBoutonTransfert()
BoutonTransfert.Enabled = True
End Sub


mon blème c'est la fonction call, lorsque je clique sur outils il m'affiche les bouton je clique sur nouveau et il me dis 'non ambigu détecté transerftancien index


J'ai bien essayé de mettre a la place du call toutes la procédure du changement des données mais va pas non plus.
Donc je suppose que je dois garder le call, mais je ne sasi pas pourquoi il ne trouve pas le "TransfertAncienIndex"
et la je ne sais pas quoi faire

pourtant transfertindex figure bien dans le fichier

Merci de ton aide
 

Pièces jointes

  • Forum 5.zip
    45.4 KB · Affichages: 15

JYLL

Nous a quitté
Repose en paix
Re : boite de dialogue

Bonjour Crapounet et le Forum,

Voici tes macros corrigées.
A mettre dans le cose de la Userform:

Code:
Private Sub Nouveau_Click()
  Dim Réponse As String
'Demande l'autorisation d'effectuer le transfert d'index
'-------------------------------------------------------
  Réponse = InputBox("Etes-vous sûr de vouloir faire cette opération (O/N) ?", "IMPORTANT")
  If Ucase(Réponse)  <> "O" Then   '###  Ucase ("o") retourne "O"
    Exit Sub
'Effectue le transfert d'index
'-----------------------------
  Else
    Call Transfert
    Nouveau.Enabled = False
  End If
End Sub
Private Sub UserForm_Initialize()
  Nouveau.Enabled = True
End Sub

à mettre dans le module:
Code:
Sub Transfert()
  UserForm1.Nouveau.Enabled = True
  Selection.Copy
   Range("G8").Select
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
  Range("H22:H25").Select
  Selection.Copy
  Range("G22").Select
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
  Range("H36:H39").Select
  Selection.Copy
End Sub

Faire attention de ne pas employer des noms de variables qui sont des mots réservés de VB, sinon VB ne retrouve pas ses petits.

Bon test
 

crapounet

XLDnaute Junior
Re : boite de dialogue

bonsoir Jyll

J'ai fait les modification et cela a l'air de bien tourner, mais il me change les donnée de la feuille ou j'ai mis le bouton outil, alors qu'il doit me changer le donnée de la feuille DONNEES.

Comment je dois lui dire de changer de feuille.

deplus j'ai un autre problème, lorsque je cliques sur le bouton, il execute la macro puis fait en sorte que le boutons ne puisse plus être utiliser.

Comment je fait pour "provisoirement annuler cette fonction pour effectuer des tests"

Un grand merci pour ton aide

A+
 

JYLL

Nous a quitté
Repose en paix
Re : boite de dialogue

Bonsoir Crapounet et le Forum,

Si tu veux faire la manip dans la feuille "DONNEES" tu fais comme suit:

Code:
Sub Transfert()
Sheets("DONNEES").Select  [COLOR="Red"]' ligne à ajouter[/COLOR]
  UserForm1.Nouveau.Enabled = True
  Selection.Copy
   Range("G8").Select
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
  Range("H22:H25").Select
  Selection.Copy
  Range("G22").Select
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
  Range("H36:H39").Select
  Selection.Copy
End Sub
Et pour que le bouton reste actif il faut faire cette modif, dans la macro nouveau_click Mettre un ' devant la ligne qui suit call Transfert comme dans l'exemple.
Code:
[COLOR="red"]    Call Transfert
   ' Nouveau.Enabled = False[/COLOR]
Bon test.
 

crapounet

XLDnaute Junior
Re : boite de dialogue

Salut Jyll

C'est tout nikell, cela fonctionne super bien.

Dit moi, lorsque je fait une suvegarde à l'aide du bouton copie, j'aimerai pouvoir mettre de façon automatique le nom du fichier sous la forme :

"copie de sauvegarde" &Données!H3 & date_du_jour &".xls"

pour la date du jour j'avais pensé à la fonction Aujourdhui() mais elle retourne la date en xx/xx/xxxx et les / ne sont pas autorisés pour le nom de fichier.

Je peux toujours définir une cellule qui reprend la fonction aujourdhui(), puis changer le format de la cellule pour mettre la date sous la forme de date-mois-année.

donc j'aurais ceci : "copie de sauvegarde" &Données!H3 &Bouton!B5 &".xls"


la cellule Données!H3 c'est une liste déroulante de 12 mois

Un grand merci pour ton aide

A+
 

JYLL

Nous a quitté
Repose en paix
Re : boite de dialogue

Bonjour Crapounet et le Forum,

Pour la date voici un petit truc simple. je mets pour commencer l'année, le mois et le jour. Cette façon de procéder à l'avantage de permettre la mise par ordre croissant naturellement. La formule est la suivante:
Code:
"copie de sauvegarde" &Données!H3 &Format(Date, "yymmdd") & ".Xls"
et si tu avais plusieurs sauvegardes par jour tu pourrais ajouter l'heure:
Code:
"copie de sauvegarde" &Données!H3 &Format(Date, "yymmdd") & "-" & Format(Time, "hhmm") &".Xls"
Bon test;
 

crapounet

XLDnaute Junior
Re : boite de dialogue

salut Jyll

j'ai placé la formule et il me retourne une erreur 424.

Si j'enlève &Données!H3 il n'y a pas d'erreur, si je le mets erreur

Dans ta formule tu mets &Données!H3, dans VBA il me met un espace entre le & et données!H3

merci pour ton aide
 

JYLL

Nous a quitté
Repose en paix
Re : boite de dialogue

Bonsoir Crapounet et le Forum,

Voici la formule qui fonctionne pour prendre le nom dans la feuille "Données" et la cellule "H3" sans heure :
Code:
ThisWorkbook.SaveAs Filename:="copie de sauvegarde" & "-" &Sheets("Données").Cells(3, 8) & "-" &Format(Date, "yymmdd") & "-" & ".Xls"
Avec heure :
Code:
ThisWorkbook.SaveAs Filename:="copie de sauvegarde" & "-" & Sheets("Données").Cells(3, 8) & "-" & Format(Date, "yymmdd") & "-" & Format(Time, "hhmm") & ".Xls"
Bon test.
 

Discussions similaires

Statistiques des forums

Discussions
312 668
Messages
2 090 739
Membres
104 643
dernier inscrit
adriano22