Microsoft 365 Envoyé donnée formulaire vers un autre classeur avec condition date

Piksaw

XLDnaute Junior
Bonjour a tous,

voila ce que je cherche a faire

J'ai un fichier qui s'appelle "Facture"avec un formulaire et je souhaite remplir le formulaire et envoyé les donnée via une macro vers un autre fichier excel
qui s'appelle " débiteur"

jusqu'a la rien de bien compliquer sauf que, dans mon classeur débiteur il y a un onglet pour chaque mois (janvier, février, mars...)

et je souhaiterais via un code via lui dire regarde dans la cellule date du formulaire et envoie les donnée dans l'onglet correspondant au bon mois du classeur débiteur et vide le formulaire
 

Pièces jointes

  • Débiteur 2022.xlsm
    150.8 KB · Affichages: 5
  • Facture formulaire.xlsx
    21.6 KB · Affichages: 7

herve62

XLDnaute Barbatruc
Supporter XLD
Bonsoir
Plutôt orienté VBA , lorsque je regarde tes fichiers je serais parti sur un USF pour tes factures c'est quand même plus aisé à gérer !! car il est plus facile de traiter une Box qu'une cellule ( adresse à trouver etc .. ?)
Pour ton cas on récupère la date > le mois et on renvoie au bon endroit !
A toi de revoir ton projet !
A moins que quelqu'un se décarcasse avec ce que tu as ?
 

Piksaw

XLDnaute Junior
Bonsoir
Plutôt orienté VBA , lorsque je regarde tes fichiers je serais parti sur un USF pour tes factures c'est quand même plus aisé à gérer !! car il est plus facile de traiter une Box qu'une cellule ( adresse à trouver etc .. ?)
Pour ton cas on récupère la date > le mois et on renvoie au bon endroit !
A toi de revoir ton projet !
A moins que quelqu'un se décarcasse avec ce que tu as ?
Hello herve62

ça à l'air interessant ce que tu propose USF ? je vais me renseigné je ne vois pas ce que c'est

quand tu parle de rechercher une facture plus aisément c'est à dire ? avec une fonction recherche qui me permettrai d'aller rechercher par exemple une facture payé en fonctionne de son numéro pour lui inscrire ça date de paiement sans avoir besoin de fouiller dans la base de données ?


je me pose aussi la question si ça ne serait pas plus simple d'avoir une base de donnée annuel et ensuite aller chercher dans cette base pour fractionner par mois ?
 

Staple1600

XLDnaute Barbatruc
Bonsoir

je me pose aussi la question si ça ne serait pas plus simple d'avoir une base de donnée annuel et ensuite aller chercher dans cette base pour fractionner par mois ?
Bingo!
Voilà une solution qu'elle est bonne ! ;)
Et pour fractionner par mois, tu utilises un TCD
(Tableau Croisé Dynamique)

NB: Pour info => USF = userform
 

Piksaw

XLDnaute Junior
Bonsoir


Bingo!
Voilà une solution qu'elle est bonne ! ;)
Et pour fractionner par mois, tu utilises un TCD
(Tableau Croisé Dynamique)

NB: Pour info => USF = userform
Top je te remercie pour ton aide je vais me pencher là dessus et voir quelque vidéo concernant les tableaux croisé comment ça fonctionne et je reviens ici poster mon travail 👍🏻

Est ce que tu aurai une vidéo qui expliquerai comme faire un formulaire userform avec possibilité de rechercher et modifier des infos entrée dans la base de donnée
 

Staple1600

XLDnaute Barbatruc
Bonsoir Herve62

Je ne fabrique rien
Ma philosophie c'est d'inciter le demandeur à mettre les mains dans le cambouis pour participer à la résolution de sa question.
(je l'ai assez écris sur XLD ;))
Sans oublier mon fameux principe KISS

Allez au plus simple
Donc une feuille en guise de base de données
Ensuite on utilise des TCD (ou PowerQuery) pour faire des extracts
Et on saupoudre de VBA pour par exemple envoyer ces TCD par mails
(RangeToMail)
Etc..
Ou pour faire une copie en PDF de ce dont on a besoin et là aussi envoi par mail.
 

Piksaw

XLDnaute Junior
Bonsoir Herve62

Je ne fabrique rien
Ma philosophie c'est d'inciter le demandeur à mettre les mains dans le cambouis pour participer à la résolution de sa question.
(je l'ai assez écris sur XLD ;))
Sans oublier mon fameux principe KISS

Allez au plus simple
Donc une feuille en guise de base de données
Ensuite on utilise des TCD (ou PowerQuery) pour faire des extracts
Et on saupoudre de VBA pour par exemple envoyer ces TCD par mails
(RangeToMail)
Etc..
Ou pour faire une copie en PDF de ce dont on a besoin et là aussi envoi par mail.
Je vais me pencher sur le côté gestion,
Merci pour vos idée
Parcontre c’est vrai que quand j’aurai fini le côté gestion il faudrai que depuis un userform je puisse envoyer les donnée dans la base de donnée qui sera sur un autre classeur Excel

Je sens que je vais m’amuser semaine prochaine à réaliser un truc sympa et je viendrai poster mon avancement
 

Piksaw

XLDnaute Junior
Re

Pourquoi un autre fichier Excel?
Excel permet d'avoir plusieurs onglets dans le même classeur
Ce qui simplifie bien les choses ;)
oui je me suis dit la même chose, je vais mettre le formulaire dans le même classeur, ce sera plus simple effectivement, à la base je voulais séparer pour une question de confidencialité, je ne voulais pas que la personne qui rentre les facture via le formulaire aie accès a l'historique des facture et dans la même foulée avoir l'historique de la somme total des montant mais je peut mettre une protection de la feuille avec mot de passe donc ça pourrai palier au problème
 

Staple1600

XLDnaute Barbatruc
Re

mais je peut mettre une protection de la feuille avec mot de passe donc ça pourrai palier au problème
Oublie
Il suffit de moins de 7 secondes et 2 dixièmes pour outrepasser la protection Excel.
Et il suffit de l'ogre G..gle pour trouver comment faire

A partir du moment où la personne rentre les factures, elle connait les montants, non ?
Donc rien ne l'empêche d'ouvrir un second classeur de faire des copier/coller
de copier les sommes dans Word
de faire des copies d'écran
de prendre l'écran en photo avec son portable
etc...
;)
 

Piksaw

XLDnaute Junior
Re


Oublie
Il suffit de moins de 7 secondes et 2 dixièmes pour outrepasser la protection Excel.
Et il suffit de l'ogre G..gle pour trouver comment faire

A partir du moment où la personne rentre les factures, elle connait les montants, non ?
Donc rien ne l'empêche d'ouvrir un second classeur de faire des copier/coller
de copier les sommes dans Word
de faire des copies d'écran
de prendre l'écran en photo avec son portable
etc...
;)
Oui c’est vrai, vu comme ça 😅
 

Piksaw

XLDnaute Junior
Hello a tous :)

j'ai un peu avancer mon fichier

j'ai créer un formulaire (sans UserForm) ou j'ajouterais simplement un bouton macro pour envoyé les donnée dans la base de donnée, ce coté la c'est bon.


ensuite j'ai créer une seul base de donnée annuel mais....

maintenant ce que j'aimerais faire c'est modifier le code qui se trouve dans la feuille facture en retard qui ne fonctionne plus :-( pour lui dire va chercher les facture en retard uniquement dans l'onglet base de donnée facture.

et la deuxième chose ce serait se savoir comment dire via une formule va me prendre dans la base de donnée uniquement les facture de Janvier et copie les dans le tableau janvier qui se trouve dans l'onglet janvier et ainsi de suite pour les autre onglet ( février, mars etc...).


voici mon fichier et le code a modifier. C'étais un membre du forum qui m'avais fait ce code qui fonctionne nickel mais comme j'ai tout changé il me renvoie des erreurs maintenant

ha. oui j'ai ajouter une fonction recherche dans la base de donnée et une mise en forme qui m'affiche les factures en retard


VB:
Sub Worksheet_Activate()
Dim Sh As Worksheet
IndexStore = 3
[ZoneRetard].ClearContents
' Pour toutes les feuilles
For Each Sh In ActiveWorkbook.Sheets
    If Sh.Name = "Annuel" Or Sh.Name = "Facture en retard" Then GoTo EndConsolidation ' Or les feuilles inutiles
    Nomfeuille = Sh.Name
    IndexMax = Application.WorksheetFunction.CountA(Worksheets(Nomfeuille).Columns("A:A"))
    For ligne = 3 To IndexMax
        If Worksheets(Nomfeuille).Cells(ligne, 3) = "" Then
            If (Now - Worksheets(Nomfeuille).Cells(ligne, 2)) >= 30 Then
                For Col = 1 To 6    ' On copie les 6 colonnes
                    Worksheets("Facture en retard").Cells(IndexStore, Col) = _
                    Worksheets(Nomfeuille).Cells(ligne, Col)
                Next Col
                ' Et on rajoute le retard en jours
                Worksheets("Facture en retard").Cells(IndexStore, 3) = _
                Round(Now - Worksheets(Nomfeuille).Cells(ligne, 2), 0)
                ' On indique le mois
                Worksheets("Facture en retard").Cells(IndexStore, 7) = Nomfeuille
                ' On prepare l'index de la ligne suivante
                IndexStore = IndexStore + 1
            End If
        End If
    Next ligne
EndConsolidation:
Next Sh
End Sub
 

Pièces jointes

  • test.xlsm
    64 KB · Affichages: 6

Staple1600

XLDnaute Barbatruc
Bonsoir

ce serait se savoir comment dire via une formule va me prendre dans la base de donnée uniquement les facture de Janvier et copie les dans le tableau janvier qui se trouve dans l'onglet janvier et ainsi de suite pour les autre onglet ( février, mars etc...).
Cela c'est typiquement une tâche pour les TCD
(12 feuilles mensuelles avec 12 TCD qui s'actualiseront en temps réel)
 

Discussions similaires

Réponses
18
Affichages
1 K

Statistiques des forums

Discussions
314 656
Messages
2 111 613
Membres
111 225
dernier inscrit
arnaud3110