Adapter une macro pour nommer et remplir mes onglets

quezaco

XLDnaute Occasionnel
Bonsoir à tous,le forum,
J'essaie d'adapter un code (un code De Efgé + un code de Kjin) pour pouvoir avoir des onglets sans doublons des deux colonnes et remplir ces mêmes onglets avec les informations correspondantes, mais je n'y arrive pas.
Quelqu'un pourrait-il me proposer une solution ?
Ci-joint fichier exemple.
Merci pour votre aide.
 

Pièces jointes

  • essai onglets2.xlsm
    32 KB · Affichages: 76

Robert

XLDnaute Barbatruc
Repose en paix
Re : Adapter une macro pour nommer et remplir mes onglets

Bonjour Quezaco, bonjour le forum,

Peut-être comme ça :
Code:
Sub Macro1()
Dim o As Worksheet 'déclare la variable o (Onglet)
Dim no As Worksheet 'déclare la variable no (Nouvel Onglet)
Dim pl As Range 'déclare la variable pl (PLage)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim dest As Range 'déclare la variable dest (cellule de DESTination)
 
With Worksheets("Feuil1") 'prend en compte l'onglet "Feuil1"
    Set pl = .Range("B2:B" & .Cells(Application.Rows.Count, 2).End(xlUp).Row) 'définit la plage pl
    For Each cel In pl 'boucle 1 : sur toutes les cellules éditées cel de la plage pl
        For Each o In Sheets 'boucle 2 sur tous les onglets du classeur
            If cel.Value = o.Name Then GoTo suite 'si la valeur de la cellule est identique au nom de l'onglet, va à l'étiquette "suite"
        Next o 'prochain onglet de la boucle 2
        Set no = Worksheets.Add(, Worksheets(Worksheets.Count)) 'ajoute un nouvel onglet
        no.Name = cel.Value 'nomme l'onglet
        .Range("A1:C1").Copy ActiveSheet.Range("A1") 'copie la plage A1:C1
suite: 'étiquette
        Set dest = Sheets(cel.Value).Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0) 'définit la cellule de destination
        .Range(cel.Offset(0, -1), cel.Offset(0, 1)).Copy dest 'copie les données
    Next cel 'prochaine cellule de la boucle 1
End With 'fin de la prise en compte de l'onglet "Feuil1"
End Sub
 

quezaco

XLDnaute Occasionnel
Re : Adapter une macro pour nommer et remplir mes onglets

Bonjour Robert, bonjour le forum,
Je vous remercie de votre réponse car je viens d'essayer votre macro qui englobe ce que je souhaitais, mais j'ai remarqué quelques anomalies.
La macro à adapter (que j'ai reussi à adapter grace à vos commentaires) ira sur un fichier à enregistrements variables (entre 1000 et 100000 lignes et 24 colonnes)
Pourriez-vous ( Si vous en avez le temps) s'il vous plait faire une correction de:
- Si onglet à creer et nommer déja présent, supprimer et remplacer les anciennes entrées par les nouvelles parce qu'elles sont constamment changées (actuellement incrémentées)
- Faire en sorte que les données copiées ne soient pas mises en forme (Copie uniquement des valeurs)
- Récupérer l'ensemble des données identiques dans une même colonne (Par exemple si j'ai les 200 premières lignes de la colonne B avec GONZALEZ puis 150 lignes suivantes avec d'autres Noms et qu'à la 351eme ligne réapparait GONZALEZ, seules les 200 premières lignes sont prises en compte.
Je pense qu'il s'agit des seules anomalies recensées et j'espère que vous pourrez y remédier.
Encore merci à vous pour votre aide.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Adapter une macro pour nommer et remplir mes onglets

Bonjour Quezaco, bonjour le forum,

Si onglet à creer et nommer déja présent, supprimer et remplacer les anciennes entrées par les nouvelles parce qu'elles sont constamment changées (actuellement incrémentées)
J'ai opté pour la solution suivante : la macro commence par suprimer (attention !) tous les onglets existants autres que l'onglet Feuil1.

Faire en sorte que les données copiées ne soient pas mises en forme (Copie uniquement des valeurs)
Fait...

Récupérer l'ensemble des données identiques dans une même colonne (Par exemple si j'ai les 200 premières lignes de la colonne B avec GONZALEZ puis 150 lignes suivantes avec d'autres Noms et qu'à la 351eme ligne réapparait GONZALEZ, seules les 200 premières lignes sont prises en compte
Ça je ne sais pas faire...

La nouvelle macro :
Code:
Sub Macro1()
Dim o As Worksheet 'déclare la variable o (Onglet)
Dim no As Worksheet 'déclare la variable no (Nouvel Onglet)
Dim pl As Range 'déclare la variable pl (PLage)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim dest As Range 'déclare la variable dest (cellule de DESTination)
 
Application.DisplayAlerts = False 'masques les messages d'Excel
For Each o In Sheets 'boucle sur tous les onglets du classeur
    If o.Name <> "Feuil1" Then o.Delete 'si le classeur ne se nomme pas "Feuil1", supprime le classeur
Next o 'prochain onglet du classeur
Application.DisplayAlerts = True 'affiche les messages d'Excel
 
With Worksheets("Feuil1") 'prend en compte l'onglet "Feuil1"
    Set pl = .Range("B2:B" & .Cells(Application.Rows.Count, 2).End(xlUp).Row) 'définit la plage pl
    For Each cel In pl 'boucle 1 : sur toutes les cellules éditées cel de la plage pl
        For Each o In Sheets 'boucle 2 sur tous les onglets du classeur
            If cel.Value = o.Name Then GoTo suite 'si la valeur de la cellule est identique au nom de l'onglet, va à l'étiquette "suite"
        Next o 'prochain onglet de la boucle 2
        Set no = Worksheets.Add(, Worksheets(Worksheets.Count)) 'ajoute un nouvel onglet
        no.Name = cel.Value 'nomme l'onglet
        .Range("A1:C1").Copy 'copie la plage A1:C1
        ActiveSheet.Range("A1").PasteSpecial (xlPasteValues) 'copie les valeurs de la plage A1:C1
suite: 'étiquette
        Set dest = Sheets(cel.Value).Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0) 'définit la cellule de destination
        .Range(cel.Offset(0, -1), cel.Offset(0, 1)).Copy 'copie les données
        dest.PasteSpecial (xlPasteValues) 'colle les valeurs des données
    Next cel 'prochaine cellule de la boucle 1
End With 'fin de la prise en compte de l'onglet "Feuil1"
Application.CutCopyMode = False 'suprime le clignotement de la sélection lié au copier...
End Sub
Le fichier :
 

Pièces jointes

  • Quezaco_v02.xls
    42.5 KB · Affichages: 64

quezaco

XLDnaute Occasionnel
Re : Adapter une macro pour nommer et remplir mes onglets

Bonjour Robert,
Merci de prendre sur votre temps afin de régler mes petits tracas.
J'ai essayé la nouvelle macro mais (c'est surement moi qui m'exprime mal), j'ai du mal à comprendre que dans le fichier "Quezaco V02", Le nom GONZALES en lignes 2 et 9 (donc avec d'autres noms entre), soit bien répertorié dans l'onglet GONZALES,

Envoyé par quezaco
Récupérer l'ensemble des données identiques dans une même colonne (Par exemple si j'ai les 200 premières lignes de la colonne B avec GONZALEZ puis 150 lignes suivantes avec d'autres Noms et qu'à la 351eme ligne réapparait GONZALEZ, seules les 200 premières lignes sont prises en compte
Ça je ne sais pas faire...

et que ceci ne fonctionne pas sur mon autre fichier qui a beaucoup plus d'entrées et de noms entre un nom précis à rechercher.
Ai-je raté quelque chose ou ce n'est tout simplement pas possible ?
Je vous remercie de votre réponse
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Adapter une macro pour nommer et remplir mes onglets

Bonsoir Quezaco, bonsoir le forum,

J'avoue que je ne comprends plus ce que tu veux... La macro récupère TOUTES les données. Qu'il y ait 1 ligne, 50 ou 200 entre le même nom. Ce que je ne sais pas faire c'est ne prendre que les 150 premiers et ignorer les suivants (après un intervalle).
Par contre, le code que je t'ai proposé considèrera différemment "Gonzales" et "Gonzales " (avec un espace après) ou " Gonzales" (avec un espace avant). C'est peut-être ça le problème de ton fichier... Mais sans le voir je ne peux t'aider plus que ça.
 

Efgé

XLDnaute Barbatruc
Re : Adapter une macro pour nommer et remplir mes onglets

Bonjour quezaco, Bonjour Robert :),
Juste pour préciser que je ne suis pas l'auteur des codes proposés dans le premier post de ce fil :rolleyes:.
J'avais fait ça, avec les indications données à ce moment là... ... mais il semble que tout soit changé.
Bon courage à tous...
Cordialement
 

quezaco

XLDnaute Occasionnel
Re : Adapter une macro pour nommer et remplir mes onglets

Bonsoir Robert, bonsoir Efgé,
Pour faire suite à la réponse de Robert, j'ai retesté sa macro et me suis aperçu qu'elle fonctionne trés bien et que vu le nombre de données à traiter, elle mettait du temps à se terminer d'ou ma demande suivante:
Pouvez-vous adapter le code pour que ne soient copiées les données des colonnes A, B, G, H J, K, L, W et X dans les différents onglets avec tri à effectuer à partir de la colonne J.
Merci pour votre aide
 

quezaco

XLDnaute Occasionnel
Re : Adapter une macro pour nommer et remplir mes onglets

Bonsoir Fo_rum, bonsoir à tous,
Suite à vos diverses réponses, toutes aussi interressantes les unes que les autres, j'ai décidé de tronquer une trés grosse partie de mon fichier et de vous le mettre en exemple de ce que je veux obtenir à partir de ma feuil1, sachant que les données en Feuil1 sont périodiquement modifiées et par là même les onglets devront l'être.
Je suis désolé si j'ai fait perdre du temps à certains d'entre vous car je pensais être en mesure d'adapter vos différentes propositions à mon fichier mais je me rends compte que je suis trés trés loin de vos capacité dans ce domaine.
Si quelqu'un avait le temps de faire cette adaptation et de commenter la macro, j'aurais moins mal à la tête:)
Encore une fois merci pour vos suggestions
Ci joint le fichier exemple
 

Pièces jointes

  • BDD Sport france.xlsm
    45 KB · Affichages: 79
  • BDD Sport france.xlsm
    45 KB · Affichages: 77
  • BDD Sport france.xlsm
    45 KB · Affichages: 67
Dernière édition:

quezaco

XLDnaute Occasionnel
Re : Adapter une macro pour nommer et remplir mes onglets

Bonjour à tous, bonjour au forum,
Je me permets de renouveler ma demande car je pense que la solution à mon problème ne devrait pas être trop compliquée à mettre en oeuvre pour une personne maitrisant VBA.
Si le fait de modifier une macro n'étant pas de soi pose un problème, quelqu'un aurait-il une autre solution à me proposer ?
Le fichier exemple est BDD Sport france ci-dessus.
Je vous remercie de bien vouloir m'aider.:)
 

pierrejean

XLDnaute Barbatruc
Re : Adapter une macro pour nommer et remplir mes onglets

Bonjour à tous

Demonstration ainsi faite qu'un petit fichier exemple nous parle infiniment mieux qu'un long discours

Vois si je l'ai bien compris
 

Pièces jointes

  • BDD Sport france.xlsm
    42.2 KB · Affichages: 70
  • BDD Sport france.xlsm
    42.2 KB · Affichages: 70
  • BDD Sport france.xlsm
    42.2 KB · Affichages: 77

DoubleZero

XLDnaute Barbatruc
Re : Adapter une macro pour nommer et remplir mes onglets

Bonjour, le Fil, le Forum,

Une autre proposition dans le fichier joint.

A bientôt :).


Fichier modifié (alertes réactivées).
 

Pièces jointes

  • 00 - quezaco - tri et onglets.xlsm
    53.3 KB · Affichages: 45
Dernière édition:

quezaco

XLDnaute Occasionnel
Re : Adapter une macro pour nommer et remplir mes onglets

Bonsoir pierrejean,
Vous venez de frapper juste, car je pense que cette fois-ci j'ai reussi à être compris en mettant exactement ce que je souhaitais.
Je remercis tous les intervenants ainsi que vous même et je m'excuse une fois de plus si j'ai fais perdre du temps à tout le monde.
Une derniere chose pierrejean s'il vous plait:
Pour plus de lisibilité dans mon fichier, pourriez-vous faire en sorte que ma Feuil1 reste en première position et que le format des CP soit conservé ?
Merci beaucoup
 

Discussions similaires

Réponses
2
Affichages
155
Réponses
93
Affichages
2 K

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16