XL 2016 Création et remplissage automatique de feuilles selon un listing

angelusr71

XLDnaute Nouveau
Bonjour à tous,

Je suis complètement nouveau sur le forum et également dans excel et j'ai besoin d'aide.

J'ai créer un fichier excel, pour l'instant avec deux feuilles. La première feuille est un listing représentant l'ensemble du personnel avec leur informations dans toutes les colonnes à la suite (exemple: DUPONT Pierre, adresse, n° de téléphone, mail, etc). Ce listing devrait comprendre environ 300 lignes (300 personnes dans le personnel).

Ce que je souhaiterais, c'est qu'à chaque fois qu'un nouveau membre intègre la société (donc une nouvelle ligne), une nouvelle feuille individuelle puisse être générée automatiquement selon le modèle (feuil_Modèle) et que cette feuille soit complétée automatiquement par les informations contenues dans la ligne.

Dans l'idéal, j'aimerais que lorsqu'une information change, par exemple une adresse, cette information soit changée automatiquement sur la feuille individuelle.

L'objectif étant de n'intervenir que sur la feuille listing aussi bien pour enregistrer quelqu'un de nouveau que pour mettre à jour des données.

Je joins ce que j'ai pu faire et trouver pour l'instant en fouillant un peu partout, malheureusement, j'ai l'impression d'être arrivé au bout de mes limites...

Merci infiniment à tous ceux qui pourront m'apporter un peu d'aide !
 

Pièces jointes

  • test.xlsm
    70.3 KB · Affichages: 31

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Angelusr, et bienvenu sur XLD.
Votre souci est que le tableau est un tableau structuré, et que la dernière ligne utilisée ne peut être obtenue par ws1.Cells(Rows.Count, 1).End(xlUp).Row, ça vous donnera la première ligne après le tableau.
Je l'ai donc remplacé par un While cells<>"".
Ensuite j'ai enrichi le modèle avec des :
VB:
=RECHERCHEV($A$1;Tableau8;1;FAUX)
pour toutes les cellules.
L'avantage est que toute modification dans le listing sera automatiquement répercutée dans la bonne feuille puisque les données sont indexées sur A1 de la feuille qui a le nom.
 

Pièces jointes

  • test (14).xlsm
    73 KB · Affichages: 13

angelusr71

XLDnaute Nouveau
Bonjour Angelusr, et bienvenu sur XLD.
Votre souci est que le tableau est un tableau structuré, et que la dernière ligne utilisée ne peut être obtenue par ws1.Cells(Rows.Count, 1).End(xlUp).Row, ça vous donnera la première ligne après le tableau.
Je l'ai donc remplacé par un While cells<>"".
Ensuite j'ai enrichi le modèle avec des :
VB:
=RECHERCHEV($A$1;Tableau8;1;FAUX)
pour toutes les cellules.
L'avantage est que toute modification dans le listing sera automatiquement répercutée dans la bonne feuille puisque les données sont indexées sur A1 de la feuille qui a le nom.
Merci beaucoup !!! C'est exactement ce que je voulais !
Pensez-vous qu'il y ait une possibilité d'ajouter une photo à la feuille individuelle en indiquant un lien dans un dossier ? Tout ça automatiquement...
En tout cas merci encore pour votre rapidité !
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Pensez-vous qu'il y ait une possibilité d'ajouter une photo à la feuille individuelle en indiquant un lien dans un dossier ?
Un essai en PJ.
J'ai rajouté une colonne AM pour mettre le lien de la photo.
VB:
    ' Insertion image
    Fichier = ws1.Cells(i, 39)  ' Le lien de l'emplacement de la photo est en colonne AM
    Set Shp = ws2.Shapes.AddPicture(Fichier, msoFalse, msoCTrue, 0, 0, 100, 90)
    Set Emplacement = ws2.Range("G3:H10")   ' Emplacement de la photo
    With Shp
        .Name = "Cible"
        .LockAspectRatio = msoFalse
        .Left = Emplacement.Left
        .Top = Emplacement.Top
        .Height = Emplacement.Height
        .Width = Emplacement.Width
    End With
Pour tester la PJ :
1- Mettre la photo en PJ sur le bureau
2- Modifier le lien en conséquence en AM2 : C:\Users\ XXXXXXX \Desktop\Im (1).jpg
 

Pièces jointes

  • test (16).xlsm
    67.3 KB · Affichages: 10
  • Im (1).jpg
    Im (1).jpg
    7 KB · Affichages: 10

angelusr71

XLDnaute Nouveau
Un essai en PJ.
J'ai rajouté une colonne AM pour mettre le lien de la photo.
VB:
    ' Insertion image
    Fichier = ws1.Cells(i, 39)  ' Le lien de l'emplacement de la photo est en colonne AM
    Set Shp = ws2.Shapes.AddPicture(Fichier, msoFalse, msoCTrue, 0, 0, 100, 90)
    Set Emplacement = ws2.Range("G3:H10")   ' Emplacement de la photo
    With Shp
        .Name = "Cible"
        .LockAspectRatio = msoFalse
        .Left = Emplacement.Left
        .Top = Emplacement.Top
        .Height = Emplacement.Height
        .Width = Emplacement.Width
    End With
Pour tester la PJ :
1- Mettre la photo en PJ sur le bureau
2- Modifier le lien en conséquence en AM2 : C:\Users\ XXXXXXX \Desktop\Im (1).jpg
Un énorme merci, vous êtes un dieu !

C'est parfait, ce fichier correspond exactement à tout ce que je voulais. Merci beaucoup !
 

angelusr71

XLDnaute Nouveau
Bonjour,
Pardon de revenir sur ce que je pensais résolu mais je n'arrive pas à comprendre pour l'ajout automatique de photo.
Lorsque j'essai sur la première ligne, ça fonctionne parfaitement mais après sur les suivantes ça ne fonctionne pas. Est-ce le chemin d'accès ?
Faut-il un format ou une dimension de photos spécifique ?
Le fichier sans la photo fonctionne parfaitement mais celui-ci moins...
Merci beaucoup...
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Difficile à dire sans fichier.
J'ai mis en PJ un fichier avec 5 lignes.
Mettez les 5 images sur votre bureau, modifier les liens hypertextes avec votre nom de PC, en colonne AM : C:\Users\ XXXXXXX \Desktop\Im (1).jpg
Chez moi ça marche.
Je n'ai testé qu'un format jpg. Les vôtres sont iles de même type ?
Les liens doivent être complets genre C:\Users\PC_PAPA\Desktop\Im (1).jpg
mais celui-ci moins...
Pas compris. :) celui ci quoi ?
 

Pièces jointes

  • test (16).xlsm
    69.2 KB · Affichages: 5
  • Im (7).jpg
    Im (7).jpg
    9.7 KB · Affichages: 7
  • Im (6).jpg
    Im (6).jpg
    6.4 KB · Affichages: 6
  • Im (5).jpg
    Im (5).jpg
    6.4 KB · Affichages: 5
  • Im (4).jpg
    Im (4).jpg
    11.6 KB · Affichages: 5
  • Im (1).jpg
    Im (1).jpg
    7 KB · Affichages: 3

angelusr71

XLDnaute Nouveau
Bonjour,
Difficile à dire sans fichier.
J'ai mis en PJ un fichier avec 5 lignes.
Mettez les 5 images sur votre bureau, modifier les liens hypertextes avec votre nom de PC, en colonne AM : C:\Users\ XXXXXXX \Desktop\Im (1).jpg
Chez moi ça marche.
Je n'ai testé qu'un format jpg. Les vôtres sont iles de même type ?
Les liens doivent être complets genre C:\Users\PC_PAPA\Desktop\Im (1).jpg

Pas compris. :) celui ci quoi ?
En effet, il fonctionne mais peut-être que mon problème est autre.
Avec votre fichier et en changeant les liens et que je créer les feuilles, tout est bien, pas de soucis.

Le problème est que si j'ajoute ensuite une autre ligne et que j'appuie à nouveau sur créer, une erreur d'éxécution 424 apparait.

L'objectif de ce document, et c'est là ou réside tout son intérêt, c'est que je puisse générer les feuilles au fur et à mesure. Des nouvelles viendront s'ajouter régulièrement et il faudrait que dès que la ligne est complétée, je puisse créer la feuille avec le bouton.

Avec le fichier sans l'ajout automatique de photo je peux sans problème compléter une ligne, créer la feuille, compléter une autre, créer la feuille, etc... avec celui-ci, il y a une erreur.

A priori, l'erreur viendrait peut-être plus de là que du format de la photo...
 

angelusr71

XLDnaute Nouveau
Bonjour,
Difficile à dire sans fichier.
J'ai mis en PJ un fichier avec 5 lignes.
Mettez les 5 images sur votre bureau, modifier les liens hypertextes avec votre nom de PC, en colonne AM : C:\Users\ XXXXXXX \Desktop\Im (1).jpg
Chez moi ça marche.
Je n'ai testé qu'un format jpg. Les vôtres sont iles de même type ?
Les liens doivent être complets genre C:\Users\PC_PAPA\Desktop\Im (1).jpg

Pas compris. :) celui ci quoi ?
Bonjour Sylvanu,
Pensez-vous qu'il serait possible d'ajouter également un bouton individuel à chaque ligne pour ne pouvoir générer qu'une feuille à la fois ?
 

Pièces jointes

  • test (14)1.xlsm
    113.7 KB · Affichages: 3

sylvanu

XLDnaute Barbatruc
Supporter XLD
chaque ligne pour ne pouvoir générer qu'une feuille à la fois ?
Rajouter des boutons à chaque ligne n'est pas la bonne solution, je pense. Vous finirez par avoir des boutons partout, ce sera lourd, inesthétique.
Testez cette macro qui me semble plus appropriée. Vous sélectionnez une cellule et lancez la macro. Celle ci ne traitera que la ligne sur laquelle vous avez fait votre sélection.
VB:
Sub cree_une_seule_feuille()
Set ws1 = Sheets("listing")
L = ActiveCell.Row
On Error Resume Next
ws1.Cells(L, 1).Hyperlinks.Delete
On Error GoTo 0
    sn = Replace(ws1.Cells(L, 1), "/", " ")
    If Not shexists(sn) Then
        Sheets("feuil_modèle").Copy after:=Worksheets(Worksheets.Count)
        Set ws2 = Worksheets(Worksheets.Count)
        ws2.Name = sn
        ws2.Cells(L, 1) = sn
    End If
    ws1.Hyperlinks.Add Anchor:=ws1.Cells(L, 1), Address:="", SubAddress:="'" & sn & "'!A1"
ws1.Select
End Sub
C'est un copier coller de la macro existante simplifiée pour ne traiter qu'une ligne.
 

angelusr71

XLDnaute Nouveau
Rajouter des boutons à chaque ligne n'est pas la bonne solution, je pense. Vous finirez par avoir des boutons partout, ce sera lourd, inesthétique.
Testez cette macro qui me semble plus appropriée. Vous sélectionnez une cellule et lancez la macro. Celle ci ne traitera que la ligne sur laquelle vous avez fait votre sélection.
VB:
Sub cree_une_seule_feuille()
Set ws1 = Sheets("listing")
L = ActiveCell.Row
On Error Resume Next
ws1.Cells(L, 1).Hyperlinks.Delete
On Error GoTo 0
    sn = Replace(ws1.Cells(L, 1), "/", " ")
    If Not shexists(sn) Then
        Sheets("feuil_modèle").Copy after:=Worksheets(Worksheets.Count)
        Set ws2 = Worksheets(Worksheets.Count)
        ws2.Name = sn
        ws2.Cells(L, 1) = sn
    End If
    ws1.Hyperlinks.Add Anchor:=ws1.Cells(L, 1), Address:="", SubAddress:="'" & sn & "'!A1"
ws1.Select
End Sub
C'est un copier coller de la macro existante simplifiée pour ne traiter qu'une ligne.
Merci Sylvanu mais à moins que je n'ai pas fait ce qu'il faut mais ça ne fonctionne pas.
J'ai créé un bouton auquel j'ai associé la macro, puis j'ai sélectionné une ligne mais ça ne marche pas...

Je pensais également qu'ajouter un bouton à chaque ligne serait trop lourd. Ce fichier devrait comporter presque 250 lignes.

En revanche, sur le même principe, en partant toujours de la feuille listing, pensez-vous qu'il soit possible via un autre bouton, tout en sélectionnant la ligne désirée, de générer et enregistrer dans un même dossier, un fichier pdf de la feuille créée ?

Par exemple, j'ai ajouté 20 lignes dans le listing que je nomme de 1 à 20. J'ai créé les 20 feuilles via le bouton "créer feuille" et sur ces 20 feuilles créer, je ne souhaite que générer et enregistrer au format pdf les feuilles 3, 8 et 15 par exemple. Est-il possible, peut-être par un système de case à cocher + un bouton, de générer et d'enregistrer dans un dossier les feuilles voulues ? Ou sans les cases à cocher juste en sélectionnant les lignes voulues ?

Merci d'avance
 

Pièces jointes

  • test (14)1.xlsm
    115.4 KB · Affichages: 1

sylvanu

XLDnaute Barbatruc
Supporter XLD
Pour le premier point, voir la PJ. pour moi ça fonctionne.

Pour le second point, qui est différent, créez un autre post.
Cela permet d'avoir un titre ciblé et aux futurs lecteurs de s'y retrouver.
Car avec "Création et remplissage automatique de feuilles selon un listing" il rateront un export pdf d'une feuille. :)
 

Pièces jointes

  • test (14)1.xlsm
    133.3 KB · Affichages: 5

angelusr71

XLDnaute Nouveau
Merci Sylvanu mais à moins que je n'ai pas fait ce qu'il faut mais ça ne fonctionne pas.
J'ai créé un bouton auquel j'ai associé la macro, puis j'ai sélectionné une ligne mais ça ne marche pas...

Je pensais également qu'ajouter un bouton à chaque ligne serait trop lourd. Ce fichier devrait comporter presque 250 lignes.

En revanche, sur le même principe, en partant toujours de la feuille listing, pensez-vous qu'il soit possible via un autre bouton, tout en sélectionnant la ligne désirée, de générer et enregistrer dans un même dossier, un fichier pdf de la feuille créée ?

Par exemple, j'ai ajouté 20 lignes dans le listing que je nomme de 1 à 20. J'ai créé les 20 feuilles via le bouton "créer feuille" et sur ces 20 feuilles créer, je ne souhaite que générer et enregistrer au format pdf les feuilles 3, 8 et 15 par exemple. Est-il possible, peut-être par un système de case à cocher + un bouton, de générer et d'enregistrer dans un dossier les feuilles voulues ? Ou sans les cases à cocher juste en sélectionnant les lignes voulues ?

Merci d'avance
Pour le premier point, voir la PJ. pour moi ça fonctionne.

Pour le second point, qui est différent, créez un autre post.
Cela permet d'avoir un titre ciblé et aux futurs lecteurs de s'y retrouver.
Car avec "Création et remplissage automatique de feuilles selon un listing" il rateront un export pdf d'une feuille. :)
Oui Sylvanu, je n'avais pas fait ce qu'il fallait ça fonctionne bien aussi de mon côté.
Je créé donc un autre poste.

Encore une fois un grand merci pour votre temps, vous m'avez apporté une aide précieuse !
 

angelusr71

XLDnaute Nouveau
Oui Sylvanu, je n'avais pas fait ce qu'il fallait ça fonctionne bien aussi de mon côté.
Je créé donc un autre poste.

Encore une fois un grand merci pour votre temps, vous m'avez apporté une aide précieuse !
Je me rends compte que la création automatique individuelle ne récupère pas les bonnes informations ?
Alors que que pour la création générale c'est bon...
 

Pièces jointes

  • test (14)1.xlsm
    110 KB · Affichages: 6

Discussions similaires

Réponses
2
Affichages
305

Statistiques des forums

Discussions
292 869
Messages
1 926 872
Membres
183 294
dernier inscrit
MINA82