[Débutant] Boite Dialogue (Userform) VB et Excel

vsan Messages postés 3 Date d'inscription samedi 11 novembre 2000 Statut Membre Dernière intervention 21 mars 2005 - 19 mars 2005 à 10:59
pjcleder Messages postés 183 Date d'inscription jeudi 4 février 2010 Statut Membre Dernière intervention 16 septembre 2011 - 22 mars 2005 à 07:30
Bonjour à tous!


Voila, j'essaie de développer (c un bien grand mot...) une sorte de boite de dialogue qui me permettrait de lancer une macro!
Ce que je voudrais, c que déjà, la boite de dialogue se lance lorsque je clique sur un bouton... ou automatiquement au lancement du fichier xls... Je ne suis pas difficile là dessus, mais je veux juste qu'elle se lance!


Et puis, je souhaiterai qu'elle me permette d'écrire dans des cases spécifiques des trucs comme "Semaine (n)" ou n est entre parenthèses parce que c une valeur qu'on rentre dans la fameuse boite de dialogue!
Trop fort le truc??? Je ne sais pas... Je n'en sais rien!

J'ai bien tenté d'enregistrer une macro moi même, mais bon, c pas évolutif comme truc... C pour ça que je me tourne vers vous!

Voici à la fin de ce message le code de la "fameuse" boite de dialogue!
Là, pour le moment, je dois lancer mon fichier xls, aller dans VBA editor, et cliquer sur PLAY après avoir sélectionné l'USERFORM... Là, elle se lance et elle fait correctement ce que j'attend d'elle, càd copier/coller des infos d'un autre fichier...

Mais donc, je vous demande :
1) Comment faire pour que cette boite de dialogue s'ouvre automatiquement???
2) Comment lui faire écrire Semaine "n" dans certaines cases???

Merci de votre aide...

Vinc' qui commence à s'arracher les cheveux!

--------------------------------------------------------------------


Private Sub Bouton_OK_Click()

Dim n As Integer
Dim x As Integer
Dim y As Integer


n = txtsemaine
x = txtcosa
y = txtrobot

If n = 0 Then
MsgBox "Indiquez un numéro de semaine valide !"
End If

If x = 0 Then
MsgBox "Indiquez un numéro de ligne valide pour les données A !"
End If

If y = 0 Then
MsgBox "Indiquez un numéro de ligne valide pour les données B !"
End If


If n <> 0 And x <> 0 And y <> 0 Then
Me.Hide
ChDir "S:\VS\Feuilles de suivi"
Workbooks.Open Filename:= _
"S:\VS\Feuilles de suivi\Fichier.xls"
Application.Run "'Fichier 1.xls'!MAJ_A"
Sheets("B").Select
Application.Run "'Fichier 1.xls'!MAJ_B"
Sheets("A").Select
ActiveWorkbook.Save
Windows("Fichier 1.xls").Activate
Sheets("A").Select
Range((Cells(x, 1)), (Cells(x + 17, 53))).Select
Selection.Copy
Windows("Fichier 2.xls").Activate
Sheets("données").Select
Range("A3").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
True, Transpose:=False
Range("A26").Select
Windows("Fichier 1.xls").Activate
Application.CutCopyMode = False
Range("A1").Select
Sheets("B").Select
Range((Cells(y, 1)), (Cells(y + 17, 14))).Select
Selection.Copy
Windows("Fichier 2.xls").Activate
Sheets("données").Select
Range("A26").Select
Application.CutCopyMode = False
Range("A26").Select
Windows("Fichier 1.xls").Activate
Selection.Copy
Windows("Fichier 2.xls").Activate
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
True, Transpose:=False
Range("A1:D1").Select
Windows("Fichier 1.xls").Activate
Application.CutCopyMode = False
Range("A1").Select
Sheets("A").Select

Windows("Fichier 2.xls").Activate
Sheets("Index").Select
Application.Run "Fichier 2.xls!maj"
End If

End Sub

4 réponses

pjcleder Messages postés 183 Date d'inscription jeudi 4 février 2010 Statut Membre Dernière intervention 16 septembre 2011 11
19 mars 2005 à 11:16
PAT

Pas de problème !

Ouvre un fichier Excel.
Va dans l'éditeur VB
Insére une user form
Sélectionne dans l'explorateur "Workbook"
A droite sélectionne l'évenement activate de workbook
colle ceci : userform1.show
enregistre
referme
a la prochaine ouverture , ta form se lance automatiquement.
commence par là. apres tu fais évoluer les choses en insérant des textbox dans ta user et un bouton pour que ce que tu saisis aille dans les cellules de ton choix.
si tu préféres que ta form ne concerne qu'une feuille du classeur fais ton show dans l'événement activate de feuil1 ou feul2
Fais moi signe en cas de souci.
0
vsan Messages postés 3 Date d'inscription samedi 11 novembre 2000 Statut Membre Dernière intervention 21 mars 2005
21 mars 2005 à 10:55
Salut à Toi !


<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />


Merci pour tes explications, maintenant ça fonctionne !


Je suis même arrivé à faire en sorte que ma userform démarre avec un clic sur un bouton ! J





Maintenant, je n'arrive toujours pas à faire en sorte que la valeur "n" de la semaine vienne se recopier dans des cellules...





Pour cela 2 choix qui se proposent à moi :


* soit j'utilise une zone d'intitulé dans la quelle je mets "Semaine n°" et une txtbox dans laquelle on vient mettre le numéro de la semaine...


* soit j'utilise une txtbox dans laquelle je viens mettre par défaut "semaine " et je demande de rajouter le numéro...





L'avantage de la première méthode c que les gens ne peuvent mettre que le numéro de la semaine, je stocke alors la valeur sous un entier... mais je ne sais comment faire faire à Excel un truc du genre "Vient mettre dans la cellule X le texte "Semaine " puis accoler à ce texte la valeur stockée...


L'avantage de la seconde méthode c que je stocke tout sous forme d'une chaîne de caractère... L'inconvénient c que les gens peuvent modifier le texte...





Ce qui me donne en matière de code, pour la méthode 1 :


Dim n As Integer


n = txtsemaine


If n = " " Then


MsgBox "Merci d'indiquer le numéro de la semaine"


End If





Pour la méthode 2 :


Dim semaine As String


semaine = txtsemaine


If semaine = "Semaine " Then


MsgBox "Merci d'indiquer le numéro de la semaine"


End If





D’après toi, je devrais choisir ???


Perso, je pense que la technique de la chaîne de caractère est plus simple.


Mais je ne sais vraiment pas comment faire pour écrire dans une cellule…





Merci d’avance !





Vinc’
0
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
22 mars 2005 à 00:55
Private Sub CommandButton1_Click()

Range("A1").Value = txtsemaine
Range("A2").Value = txtcosa

End If
0
pjcleder Messages postés 183 Date d'inscription jeudi 4 février 2010 Statut Membre Dernière intervention 16 septembre 2011 11
22 mars 2005 à 07:30
PAT

Comme te l'indique jpleroissse, tu peux affecter les valeurs sasies dans les textbox aux cellules de ta feuile.

J'ai cru comprendre que tu ne savais pas concaténer une chaine de caractéres et une valeur.

Par exemple si l'utilisateur saisit 8, tu peux écrire :

Feuil1.Range("A1").value = "Semaine n° " & txtSemaine.

A plus.
0
Rejoignez-nous