Transférer les données d'un formulaire vers une autre feuille

Degsher Messages postés 72 Date d'inscription   Statut Membre Dernière intervention   -  
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   -
Hello ladies and gentlemen !! J'espère que vous allez bien bien ce matin.. C'est avec joie que j'aimerai posé ma question ce matin.. Hier j'ai été ravi de voir avec quelle rapidité et efficacité ma question a été résolue sur ce forum en pas mal de minutes..

Eh bien !! Aujourd'hui encore, c'est toujours dans le même esprit de VBA, que j'aimerais poser ma question.. Voici:

J'ai crée un formulaire sur EXCEL en utilisant les formules excel et VBA et Dieu merci le formulaire fonctionne parfaitement comme je veux sans problème.. Maintenant le problème se pose là où je dois transférer les données saisies dans ce formulaire vers une autre feuille par exemple la feuille "Journal d'achat".

Un exemple: Dans mon formulaire, il y'a certaines informations parmi lesquelles le type de journal avec un filtre (Journal d'achat, journal de caisse, journal de vente, journal des opérations diverses, etc...) .

Alors si je remplis mon formulaire et que par exemple je sélectionne le "journal d'achat", je veux que toutes les données saisies se transfèrent systématiquement vers les cellules appropriées qui seront indiquées dans le programme lorsque je vais cliquer sur le bouton enregistrer..

J'ai écrit un programme qui hélas ne fonctionne pas..

Voici les différentes images:

-


-


-


-


Amicalement !!
A voir également:

21 réponses

Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Quelle erreur (numéro) recevez-vous...`?

0
Degsher Messages postés 72 Date d'inscription   Statut Membre Dernière intervention   1
 
Salut Le Pingou ! Je ne reçois aucun message d'erreur sauf quand je clique sur le bouton enregistrer aucune donnée saisie ne transfère. Le journal d'achat est donc vide par conséquent. Voici
l'image..
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Difficile de vous donnez une solution sans voir les instruction dans la macro d'enregistrement !

0
Degsher Messages postés 72 Date d'inscription   Statut Membre Dernière intervention   1
 
OK ! Pas de souci.. Donc dites moi s'il vous plait comment vous envoyer les instructions dans la macro d'enregistrement ??
0

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

Posez votre question
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Dans un premier temps; s'il sagit de la macro
Sub addinfo(pages, lignes)
alors il manque les références des données qui se trouvent dans votre formulaire. exemple:


en effet le
range ("C3")
fait référence à la cellule C3 de la feuille . La référence du formulaire est:
Me.Nom de  textebox .value
.

Pour le code, vous pouvez faire un copier et coller sur le poste du forum ou encore mieux, mettre le classeur à disposition sur https://mon-partage.fr/ ou https://www.cjoint.com/
Et ensuite coller le lien reçu sur le poste.

0
Degsher Messages postés 72 Date d'inscription   Statut Membre Dernière intervention   1
 
OK ! C'est ce que je vais faire. Je vous envoie le classeur tout à l'heure..

https://www.cjoint.com/c/JDqkfImWyPC
0
Degsher Messages postés 72 Date d'inscription   Statut Membre Dernière intervention   1
 
S'il vous plait je peux avoir un exemple de la réfétrence du formulaire ?
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Merci pour la mise à disposition du classeur.
Pas besoin de référence du formulaire (UserForm) car comme je le vois vous travaillez vos données depuis le tableau dans la feuille nommée (FORMULAIRE).
Une réponse en fin de journée.
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Merci de me dire ou se trouvent les valeurs pour les 2 arguments de cette fonction (
Sub addinfo(page, lignes)
)…. ?
J’attends pour la suite.


et en plus:

Votre code m’intrigue….. sur la feuille ‘FORMULAIRE’ vous avez pour le 21.mai des ACHATS et dans le détail vous avez 4 lignes de produits. Votre code dans ?’Sub addinfo()’ prend en compte qu’une seul ligne des 4. Est-ce vraiment correct ????
Merci de votre retour.



0
Degsher Messages postés 72 Date d'inscription   Statut Membre Dernière intervention   1
 
Salut le Pingou ! C'est super ! J'ai pu résoudre le problème.. En fait le souci se trouvait au niveau des différents sheets.. Car Si j'ai bien compris le fonctionnement, vu que la cellule C5 ne comporte aucun élémént égale au nom des différentes feuilles, donc cela bloquait son application. Lorsque j'ai modifié les noms des différentes feuilles, le code a fonctionné. je vous envoie le classeur encore..

Je ne sais pas si je suis assez clair, mais je vous trouverez ci-joint le classeur avec toutes les modifications..

https://www.cjoint.com/c/JDqtEVZcbdf
0
Degsher Messages postés 72 Date d'inscription   Statut Membre Dernière intervention   1
 
Actuellement je suis un peu coincé à un autre niveau.. En fait j'aimerais savoir pourquoi le msgbox se lance plusieurs fois alors que j'aimerais qu'il ne s'affiche qu'une seule fois..

Je m'explique. J'ai crée un msgbox qui m'informe que tant que certains champs du formalaire ne sont pas remplis, je ne peux procéder à une action.. Par exemple, si je dois passer une écriture, il faut que le journal soit sélectionné, le nom du fournisseur ou du client soit saisi et d'autres informations encore.

Voici le code:

If Range("c1") = "" Or Range("c3") = "" Or Range("c5") = "" Or Range("f3") = "" Or Range("f5") = "" Then
MsgBox "Tous les champs du formulaire ne sont pas renseignés. Veuillez les renseigner avant d'enregistrer une écriture.", vbInformation + vbOKOnly, "CHOIX DE LA CAISSE"
Range("c10").Select

ElseIf Range("c1") <> "" And Range("c3") <> "" And Range("c5") <> "" And Range("f3") <> "" And Range("f7") <> "" And Range("f5") <> "" And Range("f5") <> "" And Range("c10") = "" And Range("d10") = "" And Range("e10") = "" And Range("f10") = "" And Range("g10") = "" And Range("h10") = "" And Range("i10") = "" Then

MsgBox "Tous les champs du formulaire sont à présent remplis.", vbOKOnly + vbInformation, "INFORMATION"

End If

Merci bien !

Amicalement !
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Ce serait bien si vous m'indiquez ou se trouve le code et il se déclenche par quelle commande...¨!
Merci
En marge, êtes-vous certain que le code et à la bonne place......!
0
Degsher Messages postés 72 Date d'inscription   Statut Membre Dernière intervention   1
 
OK ! Le code se déclenche lorsque se déclanche lorsque je les champs du formulaire sont vides voici:

If Range("c1") = "" Or Range("c3") = "" Or Range("c5") = "" Or Range("f3") = "" Or Range("f5") = "" Then
MsgBox "Tous les champs du formulaire ne sont pas renseignés. Veuillez les renseigner avant d'enregistrer une écriture.", vbInformation + vbOKOnly, "CHOIX DE LA CAISSE"
Range("c10").Select

ElseIf Range("c1") <> "" And Range("c3") <> "" And Range("c5") <> "" And Range("f3") <> "" And Range("f7") <> "" And Range("f5") <> "" And Range("f5") <> "" And Range("c10") = "" And Range("d10") = "" And Range("e10") = "" And Range("f10") = "" And Range("g10") = "" And Range("h10") = "" And Range("i10") = "" Then

MsgBox "Tous les champs du formulaire sont à présent remplis.", vbOKOnly + vbInformation, "INFORMATION"

End If


Voir trouverez le code dans vba avec pour titre informer l'utilisateur que le formulaire est vide

Merci bien !
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Merci, pour votre information :
OK ! Le code se déclenche lorsque se déclenche lorsque je les champs du formulaire sont vides voici:
En fait le déclanchement se produit lorsque vous entrez un caractère dans l’une des cellules de la feuille ‘FORMULAIRE’ c’est sur l’évènement ‘Change’.

Voir trouverez le code dans vba avec pour titre informer l'utilisateur que le formulaire est vide
Ce n’est pas exact. Il s’agit de la macro :
Private Sub Worksheet_Change(ByVal Target As Range)


Je regarderai le fonctionnement dans la fin de journée.

0
Degsher Messages postés 72 Date d'inscription   Statut Membre Dernière intervention   1
 
OK ! Pas de souci Le Pingou ! J'ai modifié le fonctionnement en utilisant la condition "AND" au lieu de "OR".

Mais j'attends votre avis !

Amicalement !
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
En fait j'aimerais savoir pourquoi le msgbox se lance plusieurs fois alors que j'aimerais qu'il ne s'affiche qu'une seule fois...
Vous utilisez une macro événementielle, c’est une procédure qui se déclenche automatiquement lorsque l'utilisateur exécute une action particulière sur Excel.
Il s’agit d’une Macro événementielle sur changement de valeur dans cellule (Private Sub Worksheet_Change(ByVal Target As Range).

En résumé chaque fois que vous modifier une cellule de la feuille FORMULAIRE, la macro se déclenche et effectue tous les contrôles du début à la fin…….

Conseil, personnellement je contrôlerais les données soit correct pour la cellule en cours et rien d’autre. Ne pas laisser contrôler les autres à chaque fois que vous avez un événement sur ‘Change’.

0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Juste au passage je constate que ‘Caisse _OP/Journal_Op/ Libellé_Op ‘ sont liés entre eux alors pour éviter des contrôles via fonctions et aussi par VBA , utilisez donc des listes déroulantes dépendante et vous éviterez des entrés de donnée non prévu. C’est juste une idée. À vous de voir

0
Degsher Messages postés 72 Date d'inscription   Statut Membre Dernière intervention   1
 
OK ! C'est super !! J'ai pu résoudre le problème de msgbox en formulant un autre code.. Actuellement je réfléchis à comment faire pour que le journal de caisse se vide systématiquement chaque fois que j'appuie sur le bouton "mettre à zéro la caisse".

Tu as raison Le Pingou et progressivement je modifie mon code chaque fois que je constate des dysfonctionnement.. Je pense être déjà à la fin du programme..

Amicalement !!
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Merci du retour et bonne suite.
0
Degsher Messages postés 72 Date d'inscription   Statut Membre Dernière intervention   1
 
OK ! Merci.. Maintenant actuellement je voudrais vider ma caisse chaque fois que je clique sur le bouton mettre à zéro ma caisse..
Vous savez comment le faire svp ??
0