Raccorder un Userform avec un module VBA

Super Patate

XLDnaute Nouveau
Bien le bonjour la compagnie,

Je suis étudiant et je galère pas mal sur un projet. Mes notions sur excel sont confortables lorsque l'on me demande des formules, mais arrivés sur VBA j'ai l'impression de faire une dictée en chinois avec des gants de boxes.

Donc voici l'idée : J'ai pour projet ( à la fois professionnel et scolaire) de créer une Macro simple (enfin c'est ce que je croyais) de mettre en page une feuille jusque là rien de compliqué (avec l'outil enregistreur de macro).

Mais je voudrais également ajouter un formulaire (et c'est là ou je pêche), donc un userform avec un espace pour qu'un utilisateur puisque écrire une phrase (ça s'est fait) et que cette variable se retrouve sur la feuille en titre (en Centerhead). Mais après plusieurs jours de recherche (et de copier/coller infructueux) je comprends pas comment mettre en lien mon userform et mon module.

Ma question est certainement simple, mais je galère : Comment faire pour lancer un userform quand je lance ma macro, quel est l'évènement que doit inscrire pour que cela fonctionne ?

Merci par avance pour vos lumières !


PS: j'ai joins mon projet, et oui le code est pas beau c'est fait avec l'enregistrement je commence à peine à comprendre les subtilités du langages.
 

Pièces jointes

  • Macro excel.xlsm
    19.9 KB · Affichages: 64
  • Macro excel.xlsm
    19.9 KB · Affichages: 66
  • Macro excel.xlsm
    19.9 KB · Affichages: 67

laetitia90

XLDnaute Barbatruc
Re : Raccorder un Userform avec un module VBA

bonjour Super Patate
bienvenue sur le forum

plein de methode pour ouvrir un user.. dans une macro avec un bouton une evenementielle ect...

le code c'est nom user.show
dans ton cas userform3.show

tu peus par exemple mettre cette ligne a la fin de ta macro test

code de ton commandbutton dans ton user..
par exemple

Code:
Private Sub CommandButton1_Click()
Range("a1") = "essai"
End Sub
ou encore vu que tu utilise une textbox

Code:
Private Sub CommandButton1_Click()
Range("a1") = TextBox1.Value
End Sub



pour demarrer c'est bien tu sais deja cree un user:):)


ps salut titiborregan:)
 
Dernière édition:

titiborregan5

XLDnaute Accro
Re : Raccorder un Userform avec un module VBA

Bonjour super patate aux gants de boxe, le forum,

pour appeler l'userform3 (comme dans ton cas):
Code:
 userform3.show

Mais si ta phrase est si simple que ça un inputbox serait sûrement plus facile à gérer...
Mais je n'ai pas bien compris tout ce que tu voulais faire avec ta macro et ton fichier exemple est vierge de données...

Bon courage
 

Super Patate

XLDnaute Nouveau
Re : Raccorder un Userform avec un module VBA

Salut alors oui mon fichier est vierge car ma macro est une macro de mise en page en impression, du coup je cherche à mettre toutes les informations qu'on me demande au travail quand je dois imprimé des tableaux excel (donc la mise en page, tout doit tenir sur une page, etc)...

Merci pour vos réponses et votre rapidité !
 

Super Patate

XLDnaute Nouveau
Re : Raccorder un Userform avec un module VBA

Chers professeurs je suis de retour avec mon projet et toujours mes gants de boxes. Avec votre aide j'ai fais un userform (tout simple) mais de la mort qui tue (oui c'est mon premier donc forcément). Et là moi et mes gants de boxes on s'est dit tient : est-ce qu'il est possible de mettre en forme un tableau automatiquement en sélectionnant une zone, je m'explique :
- selectionner une zone ( A1 - D10) par exemple, et en lançant la macro, que cela génère un format de tableau.

Ma question est la suivante est ce que c'est possible? Cela serait de partir d'une variable (la zone de selection) et de tomber toujours sur un tableau mis en forme (j'ai essayé de passer par l'enregistreur de macro, et de mettre une variable dessus, mais je bloque encore). Je demande pas forcément la réponse, mais juste savoir si c'est possible et pas trop compliqué à faire avec des gants de boxes !

Merci par avance !
 

titiborregan5

XLDnaute Accro
Re : Raccorder un Userform avec un module VBA

Bonjour,

oui cela est possible.

Pour la selection du tableau, 2 possibilités:
- faire ctrl+* (qui sélectionne tout le tableau) qui se traduit en vba par range("a1").currentregion (en considérant que A1 est le début du tableau). Très pratique car peut marcher avec des cellules vides!
-Sinon il te faut une colonne toujours remplie et une ligne aussi (souvent la colonne A et la ligne 1).
Ensuite on détermine la dernière ligne par :
i=range("A1").end(xldown).row 'renvoie le numéro de la dernière ligne
j= range("A1").end(xlright).column 'renvoie le numéro de la dernière colonne.


Après pour la mise en forme tout dépend de ce que tu veux faire!!!
En espérant que ça t'aide un peu!
 

Super Patate

XLDnaute Nouveau
Re : Raccorder un Userform avec un module VBA

Je suis impressionné par votre facilité à apporter des réponses alors que même moi je ne suis pas sûr d'avoir compris toutes les subtilités de ma demande...

Je comprends mieux comment gérer mon tableau charge à moi d'essayer de lui mettre les bonnes valeurs merci beaucoup !
 

Super Patate

XLDnaute Nouveau
Re : Raccorder un Userform avec un module VBA

Ultime question, après mes gants de boxes et moi on en aura finit. Je comprends pas comment mettre en forme un titre. Je m'explique : Mon userform marche, il me permet (grâce à vos conseils) d'écrire un titre dans mon en-tête. J'aurais voulu le mettre en page (ex : centré, en gras, police 14) et c'est là que je comprends plus... Voici mon code :

With TextBox1.Value
.Bold = True
.Font.Size = 14
End With

Alors c'est ma dernière version, mais quand je lance la macro il me sort une erreur de débogage, me demandant un objet requis j'ai bien essayer de lui dire qu'un objet est requis, mais mon objet n'est-il pas définit par le textbox1 ?

J'ai essayé de tourner ça dans tout les sens et je comprends pas... Je suis passé par l'enregistreur pour trouver une solution, mais le code est le même (enfin presque mais les lignes de codes n'ont pas d'objet).

Comment procédé ?

Merci par avance
 

Super Patate

XLDnaute Nouveau
Re : Raccorder un Userform avec un module VBA

Cela marche, mais ce n'est pas en A1 que je veux cette action mais sur l'en-tête de ma feuille, la zone se nomme centerheader. J'ai essayer de remplacer le A1 par mon centerheader (qui sait cela aurait pu marché) mais cela me renvoie une nouvelle erreur 1004, range de l'objet _global à échouer...

C'est vraiment pas évident de trouver toutes les relations entre les objets...
 

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 182
dernier inscrit
moutassim.amine