Remplissage d'un tableau via un formulaire contenant plusieurs lignes
Bonjour,
Je cherche à automatiser (en VBA ou non) un remplissage de tableau à l'aide d'un formulaire pouvant aller jusqu'à plusieurs lignes.
Pour l'instant j'ai réussi à bricoler avec ce que j'ai trouvé, mais le bouton n'est pas relié au VBA, je ne peux pas faire qu'une ligne par une ligne, et des données changent lors du transfert.
Merci beaucoup d'avance
Melvin
Mon code VBA pour l'instant:
Private Sub générer_Click()
Dim LastRow As Long
Dim WsDepart As Worksheet
Dim WsDestination As Worksheet
If Sheets("POINTAGE").Range("A4") = "" Then
MsgBox ("La cellule numéro est vide !")
Exit Sub
End If
If MsgBox("Etes-vous certain(e) de vouloir ajouter ces cellules dans la feuille HEURES ?", vbYesNo, "Demande de confirmation") = vbYes Then
Set WsDestination = Sheets("HEURES")
Set WsDepart = Sheets("POINTAGE")
LastRow = WsDestination.Range("A" & Rows.Count).End(xlUp).Row
Application.ScreenUpdating = False
WsDepart.Range("A4").Copy
WsDestination.Range("G" & LastRow + 1).PasteSpecial xlPasteValues
WsDepart.Range("B4").Copy
WsDestination.Range("E" & LastRow + 1).PasteSpecial xlPasteValues
WsDepart.Range("C4").Copy
WsDestination.Range("F" & LastRow + 1).PasteSpecial xlPasteValues
WsDepart.Range("D4").Copy
WsDestination.Range("D" & LastRow + 1).PasteSpecial xlPasteValues
WsDepart.Range("F4").Copy
WsDestination.Range("I" & LastRow + 1).PasteSpecial xlPasteValues
' etc ....
WsDepart.Range("A4,B4,C4,D4,F4").ClearContents
Application.ScreenUpdating = False
Set WsDestination = Nothing
Set WsDepart = Nothing
MsgBox "Succès !"
Else
MsgBox "Annulé par l'utilisateur !"
Exit Sub
End If
End Sub
Private Sub CommandButton1_Click()
End SubBonjour
Lorsque vous postez un code, merci d'utiliser les balises de code en cliquant sur l'icone </> disponible dans la barre de menu.
Votre post est corrigé pour que vous voyiez
Il n'y a aucun formulaire dans votre fichier. A moins que votre formulaire soit en fait la feuille Pointage ?
Votre tableau dans la feuille Pointage est au format structuré. Dans les tableaux au format dit structuré vous ne devez jamais avoir de lignes sans données.
Là sélectionnez déjà les lignes 5 à 54 et supprimez-les.
Idem pour tous les tableaux dans votre feuille Données
Lorsque vous devrez ajouter une ligne il vous suffit de vous positionnez en dessous de la dernière ligne du tableau et d'entrer une donnée pour que le tableau s'adapte automatiquement.
Exemple en colonne E de la feuille Données, supprimez les cellules E27 à E72.
idem pour les autres tableaux
Bonjour
Lorsque vous postez un code, merci d'utiliser les balises de code en cliquant sur l'icone disponible dans la barre de menu.
Votre post est corrigé pour que vous voyiez
Super, merci!
Il n'y a aucun formulaire dans votre fichier. A moins que votre formulaire soit en fait la feuille Pointage ?
Oui c'est ma feuille POINTAGE qui fait office de formulaire.
Votre tableau dans la feuille Pointage est au format structuré. Dans les tableaux au format dit structuré vous ne devez jamais avoir de lignes sans données.Là sélectionnez déjà les lignes 5 à 54 et supprimez-les.
Meme si on va remplir jusqu'à 40 lignes? Mes données sont sous forme de liste
Quel est le risque?
Idem pour tous les tableaux dans votre feuille Données
Lorsque vous devrez ajouter une ligne il vous suffit de vous positionnez en dessous de la dernière ligne du tableau et d'entrer une donnée pour que le tableau s'adapte automatiquement.
Exemple en colonne E de la feuille Données, supprimez les cellules E27 à E72.
idem pour les autres tableaux
Merci
Re
Lorsque vous citer quelque chose, utilisez l'icone citation ( ") disponible dans la barre de menus
J'ai aussi corrigé dans votre post....
Meme si on va remplir jusqu'à 40 lignes? Mes données sont sous forme de liste
Oui absolument.
Comme expliqué, il vous suffit de vous placer en dessous de la dernière ligne complétée et d'ajouter une donnée pour que le tableau s'agrandisse automatiquement.
dans votre feuille de pointage faites ceci
- Sélectionnez A5 à F54
- Click droite --> Supprimer -> Lignes de tableau (vous devez voir la mention lignes de tableau)
- Ajouter manuellement une données en A5, vous allez voir que la ligne est créée automatiquement
Donc pour votre fichier vous complétez la feuille Pointage puis via le bouton vous transférez vers la feuille Heures ?
Est-ce que vous devez éventuellement vider la feuille Heures avant ou simplement ajouter les données à la suite des autres ?
Ensuite une fois la feuille pointage transférée, est ce que vous devez la vider ou pas ?
Donc pour votre fichier vous complétez la feuille Pointage puis via le bouton vous transférez vers la feuille Heures ?
Est-ce que vous devez éventuellement vider la feuille Heures avant ou simplement ajouter les données à la suite des autres ?
Ensuite une fois la feuille pointage transférée, est ce que vous devez la vider ou pas ?
Oui, je veux transférer via le bouton.
Il faut que les données s'ajoute à la suite des autres.
Et oui je vide le pointage une fois le transfère réussi, il y a des des petits messages box pour l'instant
Merci!
Ok. je regarde et le mieux est que je vous renvoie votre fichier une fois terminé.
Dans votre feuille données vous avez trois tableaux au format structuré jusque la dernière ligne de la feuille ! Waouh ! Vous n'allez tout de même pas avoir 1000000 de noms... en colonne G H et I
1. Pour les dates, quelle est la raison des cellules vides dans ce tableau ? Ne serait-il pas plus simple de mettre la première Date en C2, puis C3 = C2+1, etc..... Là plus de lignes vides
2. Dans la feuille Pointage, en colonne E, vous avez une liaison avec un autre fichier. normal ?
3. Une fois transféré, doit-on aussi vider la cellule A2 de la feuille pointage
Votre fichier est terminé et en attente de votre réponse sur les 3 points
1. Pour les dates, quelle est la raison des cellules vides dans ce tableau ? Ne serait-il pas plus simple de mettre la première Date en C2, puis C3 = C2+1, etc..... Là plus de lignes vides
2. Dans la feuille Pointage, en colonne E, vous avez une liaison avec un autre fichier. normal ?
3. Une fois transféré, doit-on aussi vider la cellule A2 de la feuille pointage
Votre fichier est terminé et en attente de votre réponse sur les 3 points
C'était une magouille pour ne garder que les 5 jours ouvrés.
Oui, j'ai découpé mon classeur excel car il y avait des données personnelles sur les autres feuilles
Oui ça peut, si on peut remplacer par "PRENOM, NOM, MATRICULE" pour mentionner qu'il faut le remplir, c'est un plus, mais du détail.
Merci encore!
Bonjour
Merci de vos réponses.
Pour les dates,
- je voudrais comprendre à quoi sert ce tableau dans le fichier. Peut-être à vos feuilles supprimées ?
- est-ce que l'on peut laisser les samedis et ou les dimanches dans la liste ?
2. Dans la feuille Pointage, en colonne E, vous avez une liaison avec un autre fichier. normal ?
Oui, j'ai découpé mon classeur excel car il y avait des données personnelles sur les autres feuilles
Ok. Je laisse la formule dans cette colonne. Il vous suffira peut-être de l'adapter lorsque vous mettrez vos feuilles dans le fichier
Pour les dates,
- je voudrais comprendre à quoi sert ce tableau dans le fichier. Peut-être à vos feuilles supprimées ?
- est-ce que l'on peut laisser les samedis et ou les dimanches dans la liste ?
En fait c'est pour faire une présélection pour les personnes qui rentrent leurs heures, mais si on peut ouvrir un calendrier pour sélectionner, par exemple, c'est encore mieux
En fait c'est pour faire une présélection pour les personnes qui rentrent leurs heures, mais si on peut ouvrir un calendrier pour sélectionner, par exemple, c'est encore mieux
Ok. Voyez déjà si ceci convient avant de placer un calendrier.
Explications de votre fichier
Feuille Données
- Pour compléter les dates, vous mentionnez uniquement le 1er lundi du mois en C2
- Pour ajouter dans les autres tableaux, vous entrez la nouvelle données dans la cellule juste en dessous de la dernière cellule du tableau. Exemple : dans le fichier, ajoutez un nom en G15, vous verrez que le tableau crée automatiquement la nouvelle ligne
- Pour supprimer une donnée, voir le point Suppression ci-dessous
Feuille Pointage
- vous complétez A2 du nom
- Pour les données de pointage, vous complétez toujours la ligne 4 en premier
- pour les lignes suivantes, vous ajoutez la nouvelle donnée en vous positionnant sur la ligne suivante (par exemple en A5). Une fois que vous aurez entré la date, le tableau s'agrandira automatiquement. Cela fonctionne aussi si vous entrez des données en B5, C5,....F5)
Ainsi de suite pour les lignes suivantes pour ne pas avoir de lignes sans données
Feuille Heures
- cliquez sur le bouton dans la feuille Pointage pour ajouter les données en Feuille Heures
- une fois terminé, le code réinitialise la feuille Pointage (A2 vide, et suppression des lignes)
Suppression de lignes de données
Si vous devez supprimer une ligne encodée par erreur :
- Sélectionnez la plage de la ligne à supprimer
- click droite --> choisir "Supprimer" --> "Lignes de tableau" (Si ne voyez pas lignes de tableau c'est la totalité de la plage à supprimer reprend des cellules hors du tableau)
Important ! --> Repartez bien de ce fichier posté en y incluant les feuilles que vous avez supprimées pour données confidentielles.
Pour le calendrier, j'aime assez bien celui-ci --> https://excel-pratique.com/fr/telechargements/calendriers/saisie-date-excel-no458 qui a l'avantage d'être compatible PC et MAC (sais-t-on jamais ...que cela servirait
Si ok je peux placer le calendrier dans une autre version.
Dans l'attente de vous lire
Cordialement
Merci, votre fichier marche parfaitement!
Et merci pour ce résumé très clair, j'avais modifié en direct mon fichier, ce qui m'avait donné ça:
J'aurais aimé testé en récupérant uniquement le code VBA et en le collant sur mon fichier d'origine pour comprendre et réussir à refaire plus tard, mais en faisant ça je perds des fonctionnalités, notamment le bouton que je n'arrive pas à raccorder pour exécuter le code
J'ai également corrigé mes erreurs et compléter les tableaux initiaux
Du coup je n'arrive pas à faire fonctionner mon v2 en ayant recollé ce que vous avez fait, et j'aurais aimé comprendre pour d'éventuelles maintenances par la suite
J'aurais aimé testé en récupérant uniquement le code VBA et en le collant sur mon fichier d'origine pour comprendre et réussir à refaire plus tard, mais en faisant ça je perds des fonctionnalités, notamment le bouton que je n'arrive pas à raccorder pour exécuter le code
Le code VBA que je vous ai fait se trouve dans un module créé dans l'éditeur VBA.
Pour votre bouton, vous devez le refaire via le menu développeur --> icône "Insérer" et en choisissant le bouton dans l'espace "Contrôle de formulaire"
Une fois refait sur votre feuille, faites un click droite dessus puis choisir "Affecter une macro"
Une fois fait, n'omettez pas d'enregistrer votre fichier avec l'extension XLSM pour accepter l'utilisation des macros.
Pour la colonne C en feuille Données, si vous la laissez il ne faut pas de données vides. Dans le fichier que je vous ai posté j'ai modifié cette colonne en ajoutant une formule.
Par contre si vous voulez placer un calendrier, il va falloir modifier votre fichier et supprimer la colonne C. Cela pourrait donner ceci au click dans la cellule:
Du coup je n'arrive pas à faire fonctionner mon v2 en ayant recollé ce que vous avez fait, et j'aurais aimé comprendre pour d'éventuelles maintenances par la suite
Heu non je vois pas mal de choses différentes (cf NB ci-dessous)
Expliquez-moi ce qui ne fonctionne pas que je vous donne ce que vous devez faire ou alors je mets votre feuille Traitement heure dans un nouveau fichier
NB :
- dans votre fichier en F1 de la feuille Données vous n'avez pas de titre
- dans la feuille Pointage, vous n'avez pas la liste de validation en A2
- dans le gestionnaire de noms, vous avez renommé tous vos tableaux, donc cela ne peut pas fonctionner.
Vous auriez peut-être dû poster votre bon fichier dès le départ.
Merci pour tout,
je fais tourner le fichier depuis 2j, et ne constates aucun problème. Je vais intégrer un calendrier à la case DATE, je pense pouvoir y arriver seul, en cas de problème je reviendrais dans le coin, mais j'ai cru voir beaucoup de réponse déjà sur le forum.
Encore merci!
Je vais intégrer un calendrier à la case DATE,
Pour intégrer le calendrier, ouvrez votre fichier et celui posté ici
Allez dans l'éditeur VBA et à gauche vous verrez deux fois cette vue. Celles du fichier posté et en dessous celle e votre fichier
Il suffit de sélectionner le module calendrier du fichier posté et de le déplacer dans le dossier module de votre fichier
Crdlt
Bonjour Dan,
Je ne vois pas le module calendrier dans le VBA lorsque j'ouvre le fichier posté?
J'essaie de bouger des colonnes pour réorganiser mon tableau mais cela me génère des erreurs, je passe à côté de quelques choses
*NB: C'est bon pour le code VBA, j'ai retrouvé mes erreurs.
Mais toujours pas de calendrier, je suis passé par un complément pour l'instant
Je ne vois pas le module calendrier dans le VBA lorsque j'ouvre le fichier posté?
Comment ça, vous ne le voyez pas ? La vue que je vous ai montrée vient du fichier posté
Vous devez aller dans l'éditeur VBA puis voir à gauche la fenêtre que je vous montre
Mais toujours pas de calendrier, je suis passé par un complément pour l'instant
c'est pas une bonne idée car vous allez probablement compliquer le fichier
Bonjour Dan,
sur le fichier que j'avais reçu, je ne vois que ça?
Autres questions, j'aurais aimé créer un tableau, qui se composerait selon un "filtre" d'une case Excel et une plage de date, avec en donnée d'entrée le tableau remplis dans "HEURES".
Est-ce que je recréé un fil de discussion à chaque fois?
Merci d'avance!
Bonjour
sur le fichier que j'avais reçu, je ne vois que ça?
bah oui, je viens de voir mais vous n'aviez pas répondu à ma question ici https://forum.excel-pratique.com/s/goto/1219635. Du coup cela m'est sorti de la tête. désolé ...
Dans ma réponse je vous écrivais que je placerais le calendrier dans une autre version. J'attendais votre retour sur la proposition et je n'ai plus pensé que la V1 ne contenait pas le calendrier.
Voici la version avec calendrier que j'avais préparée.
Le click en colonne A du tableau fera apparaitre le calendrier
Dans l'attente de votre retour
Autres questions, j'aurais aimé créer un tableau, qui se composerait selon un "filtre" d'une case Excel et une plage de date, avec en donnée d'entrée le tableau remplis dans "HEURES".
Expliquez-moi à quoi vous pensez ou plutôt imaginez au sujet du filtre
Est-ce que je recréé un fil de discussion à chaque fois?
Non on peut continuer ici, c'est sur le même sujet et projet. Plus simple à suivre à mon avis
Crdlt