Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Créer des copies de feuilles selon condition

2 réponses
Avatar
paruf1
Bonjour,

C'est la premi=E8re fois que je poste ici, merci par avance pour votre
aide. D'ahbitude je trouve les r=E9ponses =E0 mes questions parmi les
message existants, mais l=E0 j'avoue que je ne sais pas par o=F9
commencer.

Voil=E0 ce =E0 quoi je voudrais arriver:

J'ai deux feuilles dans un classeur:
Une feuille contenant une liste de noms (A1:A50) : "liste_des_noms"
Une feuille =E0 copier : "details_par_personne" (avec des formules)

J'aimerais cr=E9er une macro qui me permettrait de g=E9n=E9rer autant de
feuilles qu'il y a de noms dans la liste (de 1 =E0 50), avec en A2 de
chacune de ces feuilles, le nom de la liste correspondant (il faudrait
aussi que la feuille porte ce nom).
Exemple : si la liste dans la feuille "liste_des_noms" contient Jean
Dupont en A1 et Pierre Durant en A2, il faudrait que la macro cr=E9e
deux feuilles suppl=E9mentaires:
la feuille "Jean Dupont", copie de la feuille details_par_personne,
avec la valeur Jean Dupont en A2,
la feuille "Pierre Durant", copie de la feuille details_par_personne,
avec la valeur Pierre Durant en A2.

Comme les autres cellules de la liste sont vides, il n'y aura pas
d'autre feuilles cr=E9=E9es.

Je vais un peu plus loin:
Comme l'op=E9ration va =EAtre lourde en termes de calcul, il faudrait que,
=E0 chaque fois qu'une feuille est cr=E9=E9e, la macro copie et colle la
feuille par valeur une fois les formules calcul=E9es.
Puis il faudrait qu'elle fasse un test sur les valeurs des premi=E8res
cellules de chaque ligne et chaque colonne et supprime la ligne et la
colonne si cette premi=E8re cellule est =E9gale =E0 0.
Par exemple, si A5=3D0, supprimer la ligne 5, si G1=3D0, supprimer la
colonne G.
Ceci avant de cr=E9er la feuille suivante.


J'ai des bouts de code pour ces op=E9rations, mais je n'arrive pas du
tout =E0 les faire marcher, en fait mon gros probl=E8me en tant que
d=E9butant, c'est la cr=E9ation conditionnelle des feuilles en fonction de
la valeur de la cellule de la liste.

Merci pour votre aide si c'est possible,

P-Antoine

2 réponses

Avatar
JB
Bonjour,

Sub genère()
For Each c In [liste_des_noms]
If c <> "" Then
On Error Resume Next
Application.DisplayAlerts = False
Sheets(c.Value).Delete
Sheets("details_par_personne").Copy after:=Sheets(Sheets.Count)
ActiveSheet.Name = c.Value
[A2] = c.Value
End If
Next c
End Sub

http://cjoint.com/?hkm0MSc3u4

JB

On 10 juil, 12:28, wrote:
Bonjour,

C'est la première fois que je poste ici, merci par avance pour votre
aide. D'ahbitude je trouve les réponses à mes questions parmi les
message existants, mais là j'avoue que je ne sais pas par où
commencer.

Voilà ce à quoi je voudrais arriver:

J'ai deux feuilles dans un classeur:
Une feuille contenant une liste de noms (A1:A50) : "liste_des_noms"
Une feuille à copier : "details_par_personne" (avec des formules)

J'aimerais créer une macro qui me permettrait de générer autant de
feuilles qu'il y a de noms dans la liste (de 1 à 50), avec en A2 de
chacune de ces feuilles, le nom de la liste correspondant (il faudrait
aussi que la feuille porte ce nom).
Exemple : si la liste dans la feuille "liste_des_noms" contient Jean
Dupont en A1 et Pierre Durant en A2, il faudrait que la macro crée
deux feuilles supplémentaires:
la feuille "Jean Dupont", copie de la feuille details_par_personne,
avec la valeur Jean Dupont en A2,
la feuille "Pierre Durant", copie de la feuille details_par_personne,
avec la valeur Pierre Durant en A2.

Comme les autres cellules de la liste sont vides, il n'y aura pas
d'autre feuilles créées.

Je vais un peu plus loin:
Comme l'opération va être lourde en termes de calcul, il faudrait que,
à chaque fois qu'une feuille est créée, la macro copie et colle la
feuille par valeur une fois les formules calculées.
Puis il faudrait qu'elle fasse un test sur les valeurs des premières
cellules de chaque ligne et chaque colonne et supprime la ligne et la
colonne si cette première cellule est égale à 0.
Par exemple, si A5=0, supprimer la ligne 5, si G1=0, supprimer la
colonne G.
Ceci avant de créer la feuille suivante.

J'ai des bouts de code pour ces opérations, mais je n'arrive pas du
tout à les faire marcher, en fait mon gros problème en tant que
débutant, c'est la création conditionnelle des feuilles en fonction de
la valeur de la cellule de la liste.

Merci pour votre aide si c'est possible,

P-Antoine


Avatar
paruf1
On 10 juil, 12:52, JB wrote:
Bonjour,

Sub genère()
For Each c In [liste_des_noms]
If c <> "" Then
On Error Resume Next
Application.DisplayAlerts = False
Sheets(c.Value).Delete
Sheets("details_par_personne").Copy after:=Sheets(Sheets.Count)
ActiveSheet.Name = c.Value
[A2] = c.Value
End If
Next c
End Sub

http://cjoint.com/?hkm0MSc3u4

JB

On 10 juil, 12:28, wrote:



Bonjour,

C'est la première fois que je poste ici, merci par avance pour votre
aide. D'ahbitude je trouve les réponses à mes questions parmi les
message existants, mais là j'avoue que je ne sais pas par où
commencer.

Voilà ce à quoi je voudrais arriver:

J'ai deux feuilles dans un classeur:
Une feuille contenant une liste de noms (A1:A50) : "liste_des_noms"
Une feuille à copier : "details_par_personne" (avec des formules)

J'aimerais créer une macro qui me permettrait de générer autant de
feuilles qu'il y a de noms dans la liste (de 1 à 50), avec en A2 de
chacune de ces feuilles, le nom de la liste correspondant (il faudrait
aussi que la feuille porte ce nom).
Exemple : si la liste dans la feuille "liste_des_noms" contient Jean
Dupont en A1 et Pierre Durant en A2, il faudrait que la macro crée
deux feuilles supplémentaires:
la feuille "Jean Dupont", copie de la feuille details_par_personne,
avec la valeur Jean Dupont en A2,
la feuille "Pierre Durant", copie de la feuille details_par_personne,
avec la valeur Pierre Durant en A2.

Comme les autres cellules de la liste sont vides, il n'y aura pas
d'autre feuilles créées.

Je vais un peu plus loin:
Comme l'opération va être lourde en termes de calcul, il faudrait q ue,
à chaque fois qu'une feuille est créée, la macro copie et colle la
feuille par valeur une fois les formules calculées.
Puis il faudrait qu'elle fasse un test sur les valeurs des premières
cellules de chaque ligne et chaque colonne et supprime la ligne et la
colonne si cette première cellule est égale à 0.
Par exemple, si A5=0, supprimer la ligne 5, si G1=0, supprimer la
colonne G.
Ceci avant de créer la feuille suivante.

J'ai des bouts de code pour ces opérations, mais je n'arrive pas du
tout à les faire marcher, en fait mon gros problème en tant que
débutant, c'est la création conditionnelle des feuilles en fonction de
la valeur de la cellule de la liste.

Merci pour votre aide si c'est possible,

P-Antoine- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -


Merci beaucoup c'est parfait!
:-)