Certainement si simple pour vous

Ricsavoy

XLDnaute Junior
Mais alors pour moi :confused:

Bonjour à tous d'abord.

Voilà je voudrais qu' il apparaisse automatiquement une useform à l'ouverture de mon fichier excel (ça je crois avoir trouvé :D), cette USF (c'est comme ça que vous dites hein ?) sera simplement composée de zone de texte à saisir librement (nom, date, adresse etc. etc.) et ces informations viendront se copier sur des cellules sur une ou 2 feuilles de classeur. Une sorte de copier/coller automatique quoi.

Je vous l'avais bien dis que c'était très simple, tellement simple que je ne sais pas comment m'y prendre :D
 

James007

XLDnaute Barbatruc
Re : Certainement si simple pour vous

Bonjour,

Si tu veux dire dès que tu ouvres ton fichier avec Excel, il te faut une petite macro qui est à recopier dans le module ThisWorkbook ( Alt F11 )
Code:
Private Sub Workbook_Open()
UserForm1.Show
End Sub

A + :)
 

Ricsavoy

XLDnaute Junior
Re : Certainement si simple pour vous

Merci James je sais le faire l'ouverture automatique de l'usf c'est plutot comment la creer avec de multiples champs de saisie texte et que cela se recopie dans des cellules de feuilles....que je ne sais pas faire
 

alex67800

XLDnaute Impliqué
Re : Certainement si simple pour vous

Bonjour le forum,

Pour transférer tes données sur tes feuilles, à placer avec un bouton valider:
Code:
With sheets("tafeuille1") ' à adapter à ton cas
.Range("A1").value = Textbox1.value 'idem pour la cellule de destination
.Range("B1").value = Textbox2.value
'etc pour tout tes textbox
End With

With sheets("tafeuille2")
.Range("A1").value = Textbox1.value
.Range("B1").value = Textbox2.value
'etc pour tout tes textbox
End With

'Si tu veux qu'à chaque nouvelle saisie, elle aille à la ligne suivante rajoute juste après les with Sheets 
[COLOR="red"]derlig = .Range("A65536").End(xlup).Row + 1[/COLOR]
et remplace les lignes de destination par:
[COLOR="Red"].Range("A1" & derlig).value = Textbox1.value[/COLOR]

A te lire.
 

alex67800

XLDnaute Impliqué
Re : Certainement si simple pour vous

Re,

pour créer des zones de texte, dans visual basic, une fois que tu as fait insérer userform dans ton projet VBA, tu click sur le bouton avec le marteau et la clé plate, puis yu selectionne zone de text (textbox) que tu positionne sur ton usf.

Ensuite click droit sur la textbox>>>>copier
Puis coller (toujours sur l'usf) autant de fois que de textbox que tu souhaites.

Edit : petite correction il fallait lire userform et non formulaire ;)
 

Ricsavoy

XLDnaute Junior
Re : Certainement si simple pour vous

Alex67800,

Ton code :
With sheets("tafeuille1") ' à adapter à ton cas
.Range("A1").value = Textbox1.value 'idem pour la cellule de destination
.Range("B1").value = Textbox2.value
'etc pour tout tes textbox
End With

With sheets("tafeuille2")
.Range("A1").value = Textbox1.value
.Range("B1").value = Textbox2.value
'etc pour tout tes textbox
End With

'Si tu veux qu'à chaque nouvelle saisie, elle aille à la ligne suivante rajoute juste après les with Sheets
derlig = .Range("A65536").End(xlup).Row + 1
et remplace les lignes de destination par:
.Range("A1" & derlig).value = Textbox1.value


Je le place dans quel module ? j'ai essayé dans "ThisWorkbook" après :

Private Sub Workbook_Open()
UserForm1.Show
End Sub

ET il me met qu'après "End Sub" il ne peut accepter que des commentaires !!!
 

vbacrumble

XLDnaute Accro
Re : Certainement si simple pour vous

Bonsoir



Tu dois mettre le code dans le code VBA de l'userform
et non pas dans ThisWorkbook

Le code dans ThisWorkBook sert à afficher l'userform

Code:
Private Sub CommandButton1_Click()
'retire le [COLOR="Red"]* 1[/COLOR] si tes textbox ne contiennent pas des chiffres
With Sheets(1)
.Range("A65536").End(xlUp)(2, 1) = TextBox1 [COLOR="Red"]* 1[/COLOR]
.Range("B65536").End(xlUp)(2, 1) = TextBox2 [COLOR="Red"]* 1[/COLOR]
End With
End Sub


Private Sub UserForm_Initialize()
TextBox1 = Sheets(1).Range("A65536").End(xlUp)
TextBox2 = Sheets(1).Range("B65536").End(xlUp)
End Sub
 

chbugeia

XLDnaute Nouveau
Re : Certainement si simple pour vous

Mais alors pour moi :confused:

Bonjour à tous d'abord.

Voilà je voudrais qu' il apparaisse automatiquement une useform à l'ouverture de mon fichier excel (ça je crois avoir trouvé :D), cette USF (c'est comme ça que vous dites hein ?) sera simplement composée de zone de texte à saisir librement (nom, date, adresse etc. etc.) et ces informations viendront se copier sur des cellules sur une ou 2 feuilles de classeur. Une sorte de copier/coller automatique quoi.

Je vous l'avais bien dis que c'était très simple, tellement simple que je ne sais pas comment m'y prendre :D
Bonjour, pourquoi ne pas utiliser la fonction "RechercheV" dans la feuille de calcul?
Ou alors, le formulaire tout prêt si il y a une liste de saisie(2 lignes suffiront)!
 

alex67800

XLDnaute Impliqué
Re : Certainement si simple pour vous

Alex67800,

Ton code :
With sheets("tafeuille1") ' à adapter à ton cas
.Range("A1").value = Textbox1.value 'idem pour la cellule de destination
.Range("B1").value = Textbox2.value
'etc pour tout tes textbox
End With

With sheets("tafeuille2")
.Range("A1").value = Textbox1.value
.Range("B1").value = Textbox2.value
'etc pour tout tes textbox
End With

'Si tu veux qu'à chaque nouvelle saisie, elle aille à la ligne suivante rajoute juste après les with Sheets
derlig = .Range("A65536").End(xlup).Row + 1
et remplace les lignes de destination par:
.Range("A1" & derlig).value = Textbox1.value


Je le place dans quel module ? j'ai essayé dans "ThisWorkbook" après :

Private Sub Workbook_Open()
UserForm1.Show
End Sub

ET il me met qu'après "End Sub" il ne peut accepter que des commentaires !!!

Bonjour ricsavoy, le forum,

Le code que je te propose est à placer effectivement dans l'userform, en passant par un commandbutton.

Tu le crée dans ton USF, puis double click sur le bouton pour accéder au code commandbutton1_click
De là tu copie le code que je te propose, en apprtant les corrections que tu souhaites.
ET il me met qu'après "End Sub" il ne peut accepter que des commentaires !!!
Cela arrive quand tu fait un copier/coller et te retrouve avec 2 End Sub.

Pour mettre des commentaires avant chaque code tu met les signe ' sinon cela te crée également une erreur. Les commentaires s'affichent en vert dans les macros.

Ci-joint un petit exemple avec ce que je te propose
 

Pièces jointes

  • test ricsavoy.xls
    23.5 KB · Affichages: 52

Ricsavoy

XLDnaute Junior
Re : Certainement si simple pour vous

Bonjour à toutes et tous,

Bon je me remets à l'ouvrage....

Alex, en suivant ton exemple (test ricsavoy.xls) et en le réadaptant ça ne fonctionne pas chez moi, j'ai du commetre une erreur mais je n'arriva pas à voir où.:confused::confused:
 

Pièces jointes

  • ebauche devi sauto4.zip
    37.5 KB · Affichages: 28

alex67800

XLDnaute Impliqué
Re : Certainement si simple pour vous

Bonjour à toutes et tous,

Bon je me remets à l'ouvrage....

Alex, en suivant ton exemple (test ricsavoy.xls) et en le réadaptant ça ne fonctionne pas chez moi, j'ai du commetre une erreur mais je n'arriva pas à voir où.:confused::confused:
Bonsoir Ricsavoy,

1) Ton code est placé dans Private Sub CommandButton1_Click(), alors que le code de ton bouton est Private Sub Valider_Click(), il te suffisait de faire un double click dans le formulaire dans la fenêtre VBA pour qu'il te dirige dessus. Et oui tu as renommer ton bouton dans Name en Valider.
Pour le texte du bouton il faut aller caption!

2) Le code est à placer à cet endroit donc

3) tu utilises .Range("A9" & derlig).Value = TextBox1.Value, alors que tu transfert plusieurs éléments dans la même colonne (A9, A10, A11, etc...)
Cette méthode est donc à oublier. supprime le & derlig.

4) Il y a pas mal de cellule fusionnées, à bannir avec les macros, elles n'aiment pas çà. Privilégie format cellule>>>>alignement>>>>horizontal>>>>>centré sur plusieurs colonne.

5) Si tu dois créer plusieurs devis à la suite sans sauvegarde, utilise un bouton effacer qui remet tes deux feuilles à blanc.

J'ai vu plusieurs otpionbutton et chekbox sur ta feuille formulaire de A28 à A58, qu'elles sont leur rôle?


Espérant avoir été clair, je t'ai remis ton fichier avec les modifs.

A+
 

Pièces jointes

  • ebauche devi sauto4.xls
    82.5 KB · Affichages: 57

Ricsavoy

XLDnaute Junior
Re : Certainement si simple pour vous

Salut Alex et le forum

J'suis désolé Alex mais ton fichier ne fonctionne pas chez moi, lorsque je valide il m'indique une erreur d'execution 13 soit cette ligne :

.Range("A13").Value = TextBox7.Value * 1, j'ai enlevé le "*1" pensant que ça pouvait venir de là mais.......non.

What's happening ?
 

vbacrumble

XLDnaute Accro
Re : Certainement si simple pour vous

Bonjour


Dans un 1er temps, en écrivant juste

.Range("C4").Value = TextBox1

à la place de
.Range("C4").Value = TextBox1.Value
(et en remplaçant pareillement pour les lignes similaires)

tu n'auras plus de message d'erreur.
 

Ricsavoy

XLDnaute Junior
Re : Certainement si simple pour vous

Bonjour à toutes et tous,

Merci Alex, Vbacrumble et chbugeia pour votre aide si précieuse, j'ai suivi vos conseils :

Ajouter certaines val() pour les champs "téléphone" et "fax" car ça mettait un peu le bronx, j'ai aussi enlever les cellules fusionnées, des p'tits "unload me" par-ci par-là et ça marche impec.

Big UP to YOU.
;););)

Allez on passe au problème suivant qui ne va tarder à se présenter :D
 

Discussions similaires

Statistiques des forums

Discussions
312 440
Messages
2 088 452
Membres
103 854
dernier inscrit
linzei