Copier les données d'un Userform dans une feuille Excel

simkmil Messages postés 481 Date d'inscription   Statut Membre Dernière intervention   -  
simkmil Messages postés 481 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
J'ai préparé un joli Userform et je voudrais que les données s'inscrivent sur une feuille Excel après avoir cliqué sur le bouton 'enregistrer" Mais je n'y arrive pas.
Je vous joins mon fichier - enfin, son début ..
Sub ArchiverBordereau()


'archiver les bordereaux dans le récapitulatif et incrémenter le numéro de Bordereau

Dim ligne As Integer
Dim numBord As Integer

MsgBox "Avez vous fait les impressions dont vous avez besoin ?", vbOKOnly

ligne = Sheets("récapitulatif").Range("A" & Rows.Count).End(xlUp).Row + 1 'je descend d'une ligne à chaque fois
numBord = TextBox1.Value

Sheets("récapitulatif").Range("B" & ligne).Value = numBord
Sheets("récapitulatif").Range("C" & ligne).Value = TextBox2.Value
Sheets("récapitulatif").Range("D" & ligne).Value = TextBox7.Value
Sheets("récapitulatif").Range("E" & ligne).Value = TextBox6.Value


End Sub
sur mon USF j'ai un bouton "enregistrer", mais rien ne se produit ...

excusez, mais j'ai beau cliquer sur code "Basic", je n'arrive pas à mettre mon fichier correctement !

merci de votre aide

Configuration: Windows / Chrome 99.0.4844.84
A voir également:

15 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour,
explications sur les balises de code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Je pense que tu ne regardes pas au bon endroit. Les données s'inscrivent, sans doute pas où tu le souhaites.
As-tu examiné la valeur de
ligne
?
Je pense que ce n'est pas la première fois que tu rencontres ce soucis.

Il est préférable d'écrire:
ligne = Sheets("récapitulatif").Range("A" & Sheets("récapitulatif").Rows.Count).End(xlUp).Row + 1
0
simkmil Messages postés 481 Date d'inscription   Statut Membre Dernière intervention   35
 
Merci pour ton aide.
En effet j'ai déjà eu ce problème auparavant; mais cette fois j'ai un userform alors qu'avant j'avais une feuille bon de commande à vider en fin et recopier sur une seconde feuille récapitulatif.
je suis allé rechercher le code de cet ancien projet afin de m'en inspirer pour celui ci.
Maintenant, je viens de corriger ma ligne "ligne" ainsi que tu me l'a conseillé et à ce niveau àa fonctionne.
Mais ça bloque au niveau de numBord. Je l'ai supprimé et alors àa bloque au niveau du textBox7.
Par rapport à mon ancien programme, ici j'ai mis les n° de TextBox à la place des références de feuille puisque je suis sur un Userform.
Sub ArchiverBordereau()

'archiver les bordereaux dans le récapitulatif et incrémenter le numéro de Bordereau

Dim ligne As Integer
Dim numBord As Integer

MsgBox "Avez vous fait les impressions dont vous avez besoin ?", vbOKOnly
ligne = Sheets("récapitulatif").Range("A" & Sheets("récapitulatif").Rows.Count).End(xlUp).Row + 1 ' je descend d'une ligne à chaque fois

'numBord = TextBox1.Value

Sheets("récapitulatif").Range("B" & ligne).Value = numBord
Sheets("récapitulatif").Range("C" & ligne).Value = TextBox2.Value
Sheets("récapitulatif").Range("D" & ligne).Value = TextBox7.Value
Sheets("récapitulatif").Range("E" & ligne).Value = TextBox6.Value


End Sub


Bien que j'aie suivi à la lettre les explications de la mise en place du code, je n'y suis toujours pas arrivé.
Mon second problème :
j'ai mis un bouton (CommandButton) sur mon UserForm, mais je ne vois pas comment lui faire déclencheer mon enregistrement.
Merci encore une fois de ton aide.
0
simkmil Messages postés 481 Date d'inscription   Statut Membre Dernière intervention   35
 
Ouf, lors de l'envoi, le code s'inscrit correctement ! j'ai enfin réussi. Merci
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
As-tu bien
option explicit
en haut du module?

"ça bloque": symptôme?
0
simkmil Messages postés 481 Date d'inscription   Statut Membre Dernière intervention   35
 
Eh non ! je ne l'ai pas. Je vais donc l'ajouter de suite . Merci

Mais comment "dire" à mon bouton "enregistrer" qu'il doit me lancer le code ?

merci
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
Faisons d'abord fonctionner le code.
Où se trouve le code?
0
simkmil Messages postés 481 Date d'inscription   Statut Membre Dernière intervention   35
 
en effet !
voici donc le lien pour avoir mon fichier complet.
Concernant le code, tout n'est pas terminé, mais lorsque je saurai entrer les premieres, le reste se fera aisément.

https://www.cjoint.com/c/LCFqkpGDf3I

j'espère qu'avec cela tu pourras m'aider.
Encore merci
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
Ton code n'est pas au bon endroit: il est dans un module, alors que cela doit être le code du UserForm.
Option Explicit


Private Sub Enregistrer_Click()


'archiver les bordereaux dans le récapitulatif et incrémenter le numéro de Bordereau

Dim ligne As Integer
Dim numBord As Integer

MsgBox "Avez vous fait les impressions dont vous avez besoin ?", vbOKOnly
ligne = Sheets("récapitulatif").Range("b" & Sheets("récapitulatif").Rows.Count).End(xlUp).Row + 1 ' je descend d'une ligne à chaque fois

numBord = TextBox1.Value

Sheets("récapitulatif").Range("B" & ligne).Value = numBord
Sheets("récapitulatif").Range("C" & ligne).Value = TextBox2.Value
Sheets("récapitulatif").Range("D" & ligne).Value = TextBox7.Value
Sheets("récapitulatif").Range("E" & ligne).Value = TextBox6.Value


End Sub


0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
simkmil Messages postés 481 Date d'inscription   Statut Membre Dernière intervention   35
 
Et bien MERCI ! je l'ignorais. C'est la première fois que je met un Userform en place. Auparavant j'ai toujours travaillé directement sur des feuilles... Mais je trouvais que l'utilisation d'un UserForm était particulièrement bien.
Et je le pense toujours. Je vais maintenant mettre mon code dans l'USF, l'essayer et ensuite si tout fonctionne correctement, je le complète.

Merci de ton aide.
0
simkmil Messages postés 481 Date d'inscription   Statut Membre Dernière intervention   35
 
Super ! ça fonctionne à merveille ! J'ai continué mon code et cela fonctionne parfaitement pour les TextBox.
Par contre, je cherche comment faire avec les CommandButton; j'aimerais que lorsque je clique sur un commandButton il s'inscrive par exemple une croix (x) dans la colonne adhoc.
en attendant ta solution (je suis sur qu'elle va arriver, je cherche de mon côté.
Bien à toi
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
De quels CommandButton s'agit-il?
S'il s'agit de ceux pour le type de matériel à réparer, ne serait-ce pas plus logique d'utiliser des boutons d'options, plutôt que des boutons de commande? En mettant ces boutons dans le même groupe (en leur donnant le même nom de groupe), un seul pourra être coché à la fois.
Ensuite, au moment d'enregistrer, le code VBA va récupérer le(s) bouton(s) coché(s), et mettre X dans la ou les colonnes.
0
simkmil Messages postés 481 Date d'inscription   Statut Membre Dernière intervention   35
 
merci, c'est exactement ce que je voulais faire. Je vais donc changer ces boutons pour des boutons d'option et je vais essayer pour faire le groupe.

Merci
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
Le nom du groupe, c'est une propriété du bouton. Il suffit de leur mettre à chacun la même valeur pour cette propriété.
0
simkmil Messages postés 481 Date d'inscription   Statut Membre Dernière intervention   35
 
Merci, je regarde. j'ai déjà changé mes boutons.
0
simkmil Messages postés 481 Date d'inscription   Statut Membre Dernière intervention   35
 
Super ! j'ai maintenant deux groupes distincts et je peux faire un choix dans les deux groupes sans effacer le second.
Je continuerai demain ... je dois encore changer ce qui s'inscrit sur ma feuille selon le bouton cliqué ( actuellement c'est vrai ou faux)
et ensuite, je voudrais faire une sauvegarde afin de pouvoir rappeler le bordereau.
Merci bonne soirée et excellent week end
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
bon week-end, bon RepairCafé (si c'est ce week-end).
si tu as un souci pour enregistrer les options choisies (X dans la bonne colonne), partage un fichier avec la nouvelle version du UserForm.
0
simkmil Messages postés 481 Date d'inscription   Statut Membre Dernière intervention   35
 
Merci, le Repair Café c'est la semaine prochaine. Nous le faisons tous les second samedi du mois.
Nous avons débuté cela en juin par un premier essai, arrêt en juillet et aout et première "vrai" session en septembre. Chaque mois nous avons un peu plus de visiteurs- 36 le mois dernier - et nous avons une super ambiance.
Du point de vue informatique, nous sommes trois : un responsable informatique dans une grande société, un informaticien indépendant travaillant avec des sociétés (pas de magasin) depuis 20 ans et ... moi, l'apprenti ! j'y fais ce que je sais faire et je suis leurs conseils pour le reste.
Nous avons également une couturière (82 ans !), deux électroniciens, un réparateur vélo ainsi que trois "répar'Tout" qui s'occupent de démonter un aspirateur, un climatiseur mobile, le nettoyer et le remonter.
C'est vraiment une belle organisation qui m'a poussé de plus en plus à réparer plutôt que remplacer. Surtout au vu de tout ce qui augmente actuellement.
Excellent week end à toi aussi. Je me replonge dans mon programme et je reviens vers toi si besoin.
Décidement, ce forum est une superbe invention !
0
simkmil Messages postés 481 Date d'inscription   Statut Membre Dernière intervention   35
 
me revoici ...
j'ai bien avancé dans mon projet.
Maintenant mon USF s'ouvre à l'ouverture de mon dossier.
la feuille se remplit correctement, mais j'aimerais que avec les commandbutton je puisse remplacer les FAUX et VRAI par rien et X (pour vrai) J'ai cherché mais n'ai pas trouvé !
Ensuite, j'ai essayé d'imprimer mon USF, mais il prend plus qu'une page en largeur ! Je ne vois pas comment l'adapter à une feuille A4 si ce n'est un conseil vu lsur le net de faire une copie d'écran et la mettre dans une feuille et ensuite imprimer cette feuille dans les bonnes dimensions . Je trouve cela un peu farfelu ?
La dernière chose, pas du tout nécessaire, mais ce serait bien que l'heure de la prise du bordereau s'indique automatiquement. Mais ça c'est vraiment pas important.
déjà merci pour le travail que tu m'aides à réaliser.
Je joins mon fichier .
https://www.cjoint.com/c/LDckuJoMmWI
merci
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
pour les "X", je ferais:
if OptionButton1.Value then
    Sheets("récapitulatif").Range("I" & ligne).Value = "X"
end if

Je suppose que il n'y a rien à faire sinon, car toute la ligne est vide au départ.

Pour l'heure, moi je supprimerais cela du userform, et ferais:
Sheets("récapitulatif").Range("C" & ligne).Value = Time ' heure


Pour l'impression, je n'ai pas beaucoup d'expérience avec cela, je pense à deux pistes:
1) réduire la taille du userform (donc également l'afficher plus petit)
2) créer une feuille Excel qui a le look de ce que tu veux imprimer, et, au moment d'imprimer, y transférer les données, puis imprimer cette feuille.
0
simkmil Messages postés 481 Date d'inscription   Statut Membre Dernière intervention   35
 
Merci pour les OptionButton, je vais mettre cela en route de suite.
Si tu as ouvert mon fichier, tu verras que j'ai déjà préparé une feuille Excel avec les mêmes indication que sur l'USR. Je pense que je vais envoyer mes données également vers cette feuille et ensuite l'imprimer en lui donnant les dimensions désirées et tant que j'y suis pourquoi pas l'imprimer en noir et blanc (plus rapide et plsu économique)
Merci
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
Je n'avais pas remarqué le second onglet, "impression", sinon j'aurais expliqué plus simplement!

Cela te permet aussi, si utile, d'imprimer à partir d'une ligne du récapitulatif, sans passer par le userform.

Je me demande comment tout cela fonctionne, car une partie des données sont encodées avant réparation, et une autre partie après, non?
0
simkmil Messages postés 481 Date d'inscription   Statut Membre Dernière intervention   35
 
Oui, c'est aussi mon problème. Je ne sais pas encore comment nous allons faire ? je pensais à sauvegarder les bordereaux afin de pouvoir les rappeler après réparation et ainsi compléter la partie "après réparation". sinon on utiliserait des feuilles imprimées comme l'USF mais vierges et lorsqu'elles reviendraient, elles seraient alors encodées. Mais je trouve que c'est là ça prendra plus de temps.
Je peux aussi limiter l'USF à la première partie et encoder la seconde directement dans le récapitulatif.
Le récapitulatif nous permettra d'effectuer des statistiques selon toutes les critères que l'on veut.
Je vais donc me lancer dans la préparation de l'impression en recopiant les données de l'USF dans la feuille Impression.
Merci et excellente soirée.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
peut-être ainsi:
- un userform pour créer un nouveau bordereau, avec creation d'une nouvelle ligne dans "récapitulatif" (tout cela existe déjà)
- si on se positionne dans l'onglet "récapitulatif" sur une des lignes, et qu'on fait une combinaison de touches, ou un double clic, cela démarre un autre userform, qui permet de corriger/compléter les données déjà introduites.
0
simkmil Messages postés 481 Date d'inscription   Statut Membre Dernière intervention   35
 
Excellente idée, je vais essayer cela. Mais j'avais également l'idée que j'ai utilisée dans un programme de facturation (pour lequel tu m'as d'ailleurs beaucoup aidé) où je sauvegarde les documents par leur numéro d'ordre et ej peux ainsi aller rechercher le pdf, mais ici je sauvegarderais en xlsx afin de pouvoir le corriger.
Je vais essayer les deux.
Merci et excellent dimanche. Ici il fait froid ... très froid !
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
Si toutes les infos sont dans l'onglet "récapitulatif", est-il utile de sauvegarder en xlsx?
bon dimanche!
0
simkmil Messages postés 481 Date d'inscription   Statut Membre Dernière intervention   35
 
en effet !!
le principal est que nous ayons tout dans le récapitulatif .
Parfois on chercher à faire compliqué alors qu'on peut faire simple...
et bien entendu on remarque encore ici qu'il y a plus dans deux têtes que dans une.
Merci
0