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 !
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.
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é !
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 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
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...
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
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
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...
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
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 ?
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.
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 ?
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.
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 ?
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.
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...
Oups , un Replace intempestif, la cellule de destination est indépendante de L.
Remplacez ws2.Cells(L, 1) = sn par ws2.Cells(1, 1) = sn qui met donc sn en A1.