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 -
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 !!
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:
- Transférer les données d'un formulaire vers une autre feuille
- Whatsapp formulaire opposition - Guide
- Fuite données maif - Guide
- Formulaire de réclamation facebook - Guide
- Comment transferer une boite mail vers une autre - Guide
- Supprimer les données de navigation - Guide
21 réponses
Bonjour,
Difficile de vous donnez une solution sans voir les instruction dans la macro d'enregistrement !
Difficile de vous donnez une solution sans voir les instruction dans la macro d'enregistrement !
OK ! Pas de souci.. Donc dites moi s'il vous plait comment vous envoyer les instructions dans la macro d'enregistrement ??
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Dans un premier temps; s'il sagit de la macro

en effet le
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.
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.
OK ! C'est ce que je vais faire. Je vous envoie le classeur tout à l'heure..
https://www.cjoint.com/c/JDqkfImWyPC
https://www.cjoint.com/c/JDqkfImWyPC
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.
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.
Bonjour,
Merci de me dire ou se trouvent les valeurs pour les 2 arguments de cette fonction (
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.
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.
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
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
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 !
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 !
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......!
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......!
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 !
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 !
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 :
Je regarderai le fonctionnement dans la fin de journée.
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.
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 !
Mais j'attends votre avis !
Amicalement !
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’.
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’.
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
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
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 !!
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 !!