Copier/Coller depuis Feuille Source vers nvelle feuille

Re bonjour à tous...

Bon second post pour aujourd'hui... complémentaire du premier... et tout aussi casse tête pour moi... j'ai cherché un peu partout (bonne prise de tête pendant plus de 15 jours avant de vous demander de l'aide pour les divers fichiers à tracas!) ... mais soit je comprend pas le code et j'évite donc dans l'insérer dans la macro existante... soit ce que je trouve ne me convient pas...

Bref... en prenant manuellement chacune des feuilles créées... et vu le nombre conséquent non seulement je passe un temps fou... mais répétition de "rechercher/remplacer" aidant... il n'est pas rare que je fasse une boulette...

Si vous pouvez une fois encore m'aider... Merci beaucoup....

Là franchement, je m'agace et baisse les bras... puisque le seul code que j'avais moins que plus réussi m'indiquait toujours les données de la ligne 2...

Alors J'ai une feuille Base & une feuille Modèle

Avec la macro jointe dans l'exemple, il y a la création de X feuille copie du modèle pour chaque ligne de la feuille Base...

Dans les feuilles créées :

J'aimerai que la plage (F1:J1) se remplisse automatiquement à la création de la nouvelle feuille avec les valeurs des colonnes (C:G) correspondant à la ligne qui génère la création de cette feuille...

Exemple lors de la création de la feuille "1" (généré par la cellule A2 non vide de la feuille "Base"), il faudrait que cette plage corresponde aux données C2:G2 de la feuille "Base"

Voici le code de la macro actuelle dans le fichier joint et en fin de ce post... donc si possible inclure le copier/coller dans cette macro...

Autres demandes (de moindre importance)...

1- A chaque fois, avant d'exécuter la macro, je dois supprimer les feuilles créées antérieurement car la macro part toujours du début de la feuille "Base"... Hélas j'ai beaucoup de feuilles...

et, de plus, plus il y a de ligne dans la feuille "Base"... plus cela prend du temps...

Alors, je me demande s'il ne serait pas mieux d'inclure avant l'exécution du code de création de feuille un code pour que la création de nouvelle feuille ne s'exécute que si le nombre de ligne de la feuille "Base" est supérieur au nombre de feuille à partir de la feuille "1" incluse que contient le dossier. Et, si tel est le cas, ne créer que les nouvelles feuilles concernées par les nouvelles lignes tout en conservant les autres... Est-ce possible à votre avis ? et si oui, comment ?...

2 - A plusieurs reprise (à force de chercher des solutions!), j'ai constaté que lorsqu'il est question de fichier assez imposant en nombre de ligne, colonne, calcul.... très souvent, il est proposé les Array... Bon alors là, je nage encore plus la brasse coulée... malgré les cours ici et l'aide microsoft... Pourtant, pour certains fichier dont celui-ci, il semblerait que cela soit plus indiqué pour la rapidité d'exécution du code... (actuellement 5 bonnes mn!)... Bon, ok, je peux faire pause café pendant ce temps là... mais... pour d'autres fichier c'est une bonne heure...

Alors comme tous mes fichiers différents découlent les uns des autres... je me demande s'il ne serait pas préférable d'utiliser les Array ... y compris pour le cas précis ici...

Si quelqu'un peut m'éclairer de ses lumières à ce sujet... j'apprécierai beaucoup... et, si ce n'est pas trop abuser, alors j'aimerai bien le code avec explication détaillée pour le fichier en question ici ou un exemple de code pour 5 colonnes pour m'expliquer pas à pas... comme cela je comprendrais peut-être enfin comment utiliser les Array...

Encore une fois merci à tous ceux qui nous aident, conseillent et forment...

En attendant de vous lire... Belle journée...

Lilly

Sub RapQuotPers()

'Créer et remplir les feuilles depuis les infos de la feuille BASE

Dim wsBase As Worksheet 'Feuille Base

Dim wsMod As Worksheet 'Feuille Modèle

Dim c As Range

Application.ScreenUpdating = False

Set wsBase = Worksheets("Base")

Set wsMod = Worksheets("Modèle")

Set c = wsBase.Range("A2") 'Cellule de départ de la colonne de comptage pour créer les autres feuilles

Do Until IsEmpty(c) 'boucle

wsMod.Copy After:=Worksheets(ThisWorkbook.Sheets.Count) 'copie du modèle

With Worksheets(ThisWorkbook.Sheets.Count) 'action menée :

.Name = c.Value 'Nom de l'onglet

.Range("A1") = c.Value

'Copie de la plage C:G de la ligne où est c de la feuille "Base" vers F1:J1 du nouvel onglet

End With

Set c = c.Offset(1, 0) 'prochaine ligne

Loop

Application.ScreenUpdating = True

End Sub

49wbc.xlsm (25.81 Ko)

re bonjour Lilly

voici déjà pour mettre les données Cx à Fx de la feuille base dans chaque feuille

mettre en dessous de cette ligne :

'Copie de la plage C:G de la ligne où est c de la feuille "Base" vers F1:J1 du nouvel onglet

cette ligne

             wsBase.Range("C" & c.Row & ":G" & c.Row).Copy .Range("F1")

je regarderais plus tard pour le reste

Fred

A force de me prendre la tête... .... de fouiller ici....

j'ai "bricolé" quelque chose qui semble fonctionner... pour faire ce que je souhaite en utilisant la WorksheetFunction VLookup...

et cette fois-ci j'ai pas toujours le résultat de la ligne 2 qui s'affiche...

Donc toute à la joie d'avoir trouvé... mais au cas où l'on peut améliorer la macro (je rappelle que c'est bientôt Noël et que je peux rêver ) .... ou bien que cela finisse par servir à quelqu'un d'autre .... je partage le code complet de cette petite macro sans prétention (restons modeste ! )...

Attention quand même pour ceux qui souhaite utiliser ... penser à supprimer les pages créées antérieurement avant de lancer la macro...

Je vous souhaite à tous de belles fêtes... avec pleins de bons codes... ....

Et moi je retourne me plonger dans la création des miens et l'apprentissage vba... (il faut bien 3 smileys pour faire le bon poids!)

Lilly

Code de la macro :

Dim wsBase As Worksheet 'Feuille Base

Dim wsMod As Worksheet 'Feuille Modèle

Dim c As Range

Dim ws As Worksheet

Dim I As Integer

Application.ScreenUpdating = False

Set wsBase = Worksheets("Base")

Set wsMod = Worksheets("Modèle")

Set c = wsBase.Range("A2") 'Cellule de départ de la colonne de comptage pour créer les autres feuilles

Do Until IsEmpty(c) 'boucle

wsMod.Copy After:=Worksheets(ThisWorkbook.Sheets.Count) 'copie du modèle

With Worksheets(ThisWorkbook.Sheets.Count) 'action menée :

.Name = c.Value 'Nom de l'onglet

.Range("A1") = c.Value

End With

Set c = c.Offset(1, 0) 'prochaine ligne

Loop

For I = 3 To Worksheets.Count

With Worksheets(I)

.Range("F1") = Application.VLookup(Worksheets(I).Range("A1"), wsBase.Range("A1:G12"), 3, 0)

.Range("G1") = Application.VLookup(Worksheets(I).Range("A1"), wsBase.Range("A1:G12"), 4, 0)

.Range("H1") = Application.VLookup(Worksheets(I).Range("A1"), wsBase.Range("A1:G12"), 5, 0)

.Range("I1") = Application.VLookup(Worksheets(I).Range("A1"), wsBase.Range("A1:G12"), 6, 0)

.Range("J1") = Application.VLookup(Worksheets(I).Range("A1"), wsBase.Range("A1:G12"), 7, 0)

End With

Next I

Application.ScreenUpdating = True

End Sub

ravi pour toi que tu ais trouver une solution, mais je pense que la mienne est plus rapide et plus simple..... a tester donc

en pièce jointe ton fichier avec la création que des nouvelles feuilles comme demandé, a tester aussi ...

en ce qui concerne les Arrays ???? => je ne sais pas

a+

fred

105wbc.xlsm (25.62 Ko)

Coucou Fred... et encore une fois ...

J'ai pas trouvé que les smileys rigolos... j'ai aussi cherché de mon côté... et trouver une petite solution à force de me triturer les neurones... nettement moins digeste que la tienne... ça c'est sur...

Alors je copie ta solution... et je vais de suite voir comment elle tourne.... et encore et encore

J'ai mis ce post en résolu vu que le sujet principal est solutionné... et que les copines me pressent un peu pour avoir les résultats finaux... (on devait être sous un parapluie le jour où fée patience à fait sa distribution... )

Donc pour les questions annexes ... pour le moment... je vais faire sans... et dès que j'aurai "bien bricolé" et donné un premier jet aux filles, je referais un post... car il me semble que je suis pas la seule à galérer vu le nombre de post lus ces derniers jours...

Mais si tu as une idée... .... elle est la

ici aussi....

Je te souhaite à nouveaux de très belles fêtes.... pleins de cadeaux du ....

Au plaisir de te retrouver ici...

pour tes questions annexes la première c'est fait (rajout uniquement des nouvelles lignes/feuilles=> c'est fait dans le fichier fournis)

pour la deuxième l'utilisation des arrays je ne sais pas, mais peut-être que quelqu'un d'autre pourra t'aider dans un nouveau post.

Bonnes fêtes

Fred

Décidément nos réponses se croisent...

Encore

Et je vais faire comme les enfants impatients... vite vite essayer ta solution sur le vrai fichier... ....

Au plaisir de te relire... et aussi probablement vu mon faible niveau de te questionner....

Amitiés...


Fred si tu es toujours là...

le fait de bloquer les calculs signifie--il que je peux avoir 25 colonnes concernant des NBSI.ENS sur ma feuille modèle qui seront calculé uniquement avant la fin de la macro ???

Si oui... Là ... ça va super m'arranger... peut-être même au niveau du temps ensuite...

???

Bon c'est peut-être une question bête...

Merci encore

Au plaisir

Rechercher des sujets similaires à "copier coller feuille source nvelle"