Problème Macro - Insertion auto d'onglet
Bonjour à tous.
Je suis une petite nouvelle je découvre tout juste ce merveilleux forum
Je me permets de faire appel à vos connaissances Excel.
J'ai un fichier excel avec en lignes les nom d'utilisateurs et en colonnes, un couple de transactions.
A chaque intersection, la valeur 0 ou 1 est renseignée (1 signifie que la personne dispose de ce couple).
J'ai environ 3700 utilisateurs (lignes) et 170 couples (colonnes).
J'aimerai réussir à automatiser la création d'onglets pour chaque couple de transaction. A chaque nouvel onglet je souhaiterais voir apparaitre la liste des gens concernés par ce conflit et avec en nom d'onglet, le nom du couple incompatible.
Je ne sais pas si ma demande vous parait clair donc je vous joint un fichier joint permettant d'illustrer mes propos.
Je vous remercie par avance d'aider la petite débutante que je suis
En espérant un retour.
Mimi
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
Bonjour et bienvenue,
Tu devrais compléter un peu + ton fichier
et ajouter 2 ou 3 exemples du résultat souhaité
il y a peut-être plus simple à faire
Amicalement
Claude
Bonjour Claude et merci de ta réponse.
En effet, un exemple serait plus parlant
Je joint donc un autre fichier complété par des exemples.
En te remerciant.
Mimi
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
Bonsoir Mimi, forum,
C'est bien ce que je pensais, on peut faire tout sur la même feuille
ou sur une seconde feuille "extraction"
avec filtres élaborés.
Vu le nombre important de lignes et colonnes, çà vaut le coup !
essayes d'envoyer une dizaine de lignes avec toutes les colonnes,
si possible avec la structure réelle.
à te relire, pour suite à donner
Claude
Bonsoir
avec ce que j'ai compris ...
La macro supprime les feuilles si elles existent (pour éviter des blocages) et les recréé avec les informations voulues.
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
Bonjour à tous,
Je reste persuadé qu'il n'y a pas besoin de 170 feuilles !
Quoi qu'il en soit, j'avais préparé la macro comme demandé,
le résultat est identique à celle de BoNus
il serait intéressant de comparer les temps de traitement sur les 2 versions
fichier complet, (les 2 méthodes étant différentes)
Sub CréationFeuil()
'Macro par Claude Dubois pour "petitemimi_paris" Excel-Pratique le 13 mai 2011
Dim i%, cL%, Plg As Range
Dim Lg%, Sh$, x
x = Time
Application.ScreenUpdating = False
Sh = Sheets("Exemple").Name
With Sheets(Sh)
Lg = .Range("a65536").End(xlUp).Row
cL = .Cells(5, 250).End(xlToLeft).Column
Set Plg = Range(.Cells(5, 1), .Cells(Lg, cL))
'--- supprime feuilles ---
Application.DisplayAlerts = False
For i = Worksheets.Count - 1 To 2 Step -1
Worksheets(i).Delete
Next i
Application.DisplayAlerts = True
'--- création feuilles ---
For i = cL To 2 Step -1
Sheets.Add Before:=Worksheets(2)
ActiveSheet.Name = Application.Substitute(.Cells(5, i), "/", "-")
'-- filtre données --
.Range("g2") = "=" & Cells(6, i).Address(RowAbsolute:=False) & "=1" 'critère
With Sheets(2)
Sheets(Sh).Cells(5, i).Copy Destination:=.Cells(1, 2) 'en-tête
.Cells(1, 1) = Sheets(Sh).Cells(5, 1) 'en-tête 'en-tête
Plg.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
Sheets(Sh).Range("g1:g2"), CopyToRange:=.Range("a1:b1"), Unique:=False
'--
.Range("b1").Copy Destination:=.Range("a1")
.Columns(2).Clear
.Cells(1, 2) = "=COUNTA(a:a)-1"
.Columns(1).AutoFit
End With
Next i
.Activate
Range("g2").Clear
End With
Application.ScreenUpdating = True
MsgBox ("temps macro = " & Format(Time - x, "hh:mm:ss"))
End SubBonne journée
Claude
Bonjour Claude.
Un énorme merci pour cette macro qui fonctionne très bien et qui est très efficace même avec une grande volumétrie.
Cependant, je me permets de compléter ma demande (car j'ai essayé d'ajouter des lignes de codes pour améliorer le fichier mais sasn succès).
Je joint donc un autre exemple du résultat souhaité (les onglets créés automatiquement ont été enrichis avec une recherchev sur un autre onglet --> rapatriement d'information sur les utilisateurs, un lien hypertexte renvoyant vers l'onglet synthèse. J'ai également ajouté un onglet "Synthèse" reprenant l'ensemble des onglets précédemment créés avec un lein hypertexte vers celui - ci ainsi que le rapatriement de la cellule "nbval" de chaque onglet)
Comme d'habitude je vous laisse un fichier d'exemple, plus parlant que mes explications.
Je vous remercie vraiment de ce que tu fais pour moi Claude, j'apprécie.
Mimi
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
Bonjour à tous,
Mimi, tu ne réponds pas à mon idée d'une seule feuille + synthèse
dommage !
Sinon,
Sur ton dernier fichier, je te propose d'incorporer les "infos" dans la feuille "Exemple"
ce qui simplifie grandement le programme pour un même résultat (+ le poids du fichier réduit),
voir ce fichier de mise en page.
Combien y a t-il de noms dans la version réelle ?
à te relire
Claude
Claude,
merci encore pour ton intérêt à mon problème.
Le fichier tel qu'il est dans mon dernier message est vraiment le rendu attendu (en prenant en compte les complexités,c-a-d avoir un onglet info indépendant).
La version réelle fait environ 5000 noms d'utilisateurs (5000 lignes).
Penses tu que la macro serait capable de gérer cela sans faire planter excel (j'ai un quad coeur 64bits...)
En te remerciant par avance pour tout.
Mimi
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
Bonsoir à tous,
Le fichier tel qu'il est dans mon dernier message est vraiment le rendu attendu (en prenant en
compte les complexités,c-a-d avoir un onglet info indépendant).
Pourquoi indépendant ? , il va falloir argumenter un peu plus ce dictat,
Quelle différence y a t-il entre ces 2 feuilles ?
Les colonnes "Noms" ne sont pas les mêmes, le nombre de lignes est-il différent ?
Faire des feuilles pour faire des feuilles, on t'a démontrer qu'on sait faire, même si elles
ne servent à rien.
Pas sûr que je continue à te suivre !
Tu vas droit vers une usine à gaz, à laquelle je ne participerais pas.
réfléchis encore à ton projet
Amicalement
Claude
Claude,
je suis navré que tu le prennes de la sorte. Si j'ai laissé la contrainte des deux feuilles indépendantes c'est bien parce que justement (et comme tu l'as justement deviné), les informations des deux feuilles ne sont jamais les mêmes (la feuille info peut contenir jusqu'à 20 000 lignes alors que la feuille exemple contiendra elle, suivant l'analyse, un maximum de 3000 noms, présents dans la feuilles info.) Si je te demande si il est possible que la macro sache (et puisse) prendre les informations à partir de la feuille info c'est pour éviter à faire une recherchev sur ma population avant tout traitement préalable (éviter un maximum le traitement manuel pour réduire le risque d'erreur).
Je suis vraiment désolé que mon problème soit interprété comme cela. Si tu ne continues pas à me suivre, je tiens juste à te remercier cependant pour l'aide que tu m'as déjà apportée.
Mimi
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
Bonjour à tous,
Mimi,
Si je me pose ces questions, c'est parce que j'aime bien savoir ce que je fait et où je mets les pieds,
non pas exécuter bêtement une requête (parfois absurde).
Il faudrait savoir comment tu utilise ce fichier, quel est son but ?
j'ai cru comprendre:
- après rafraichissement des onglets (macro)
tu consulte ces onglets en choisissant un couple "AA/AB" par exemple
c'est tout ?
J'ai compris pour les 2 feuilles "Exemple" et "infos", il faudra donc faire une recherche,
pour se faire, il ne faudrait pas de doublons dans les colonnes "Nom"
ces 2 feuilles sont-elles bien dans le même fichier ? (j'espère)
confirme ces points importants.
Combien de lignes dans chaque onglet extrait (environ ou fourchette) ?
Le mieux serait de m'envoyer le fichier complet (les 2 feuilles "exemple et infos"), afin que
je me forge une idée plus précise et oriente le programme en conséquence.
Je peux t'envoyer mon adresse e-mail en MP
Un bon départ évite bien des désagréments, par la suite !
Je reste convaincu que les 170 onglets sont inutiles, mais bon !
(je sais obtenir le même résultat sur la même feuille)
à te relire
Claude