jeff1494
XLDnaute Occasionnel
Bonsoir à toutes et tous;
J'ai créé un petit outil me permettant de suivre mes ventes dans un vide-grenier permanent.
Ce classeur est composé de plusieurs feuilles qui contiennent la liste des objets mis en vente, la liste des catégories et types d'objets, les marques de ces objets, ....
Dans ce classeur je gère des noms soit pour les tableaux structurés que j'utilise soit pour des cellules contenant des paramètres permettant l'évolution de compteurs.
Comme je fais des mises en vente espacées dans le temps, je veux reprendre dans un nouveau classeur ayant la même structure de feuilles des données provenant d'anciennes ventes. Par exemple j'ai un classeur contenant les résultats d'une vente du mois de septembre avec des objets qui n'ont pas été vendus, et je voudrais récupérer certaines feuilles de ce classeur dans un nouveau classeur pour une vente en Janvier.
Cette partie ne me pose pas de problèmes, j'arrive à récupérer les feuilles que je veux, grâce à une macro que se lance à l'ouverture du classeur. Pour ne pas importer à chaque ouverture des feuilles j'ai un flag (feuille params) que je positionne à la valeur 1 après avoir importé les feuilles.
Lors de l'importation des feuilles du fait que les classeurs ont la même structure j'ai le problème suivant :
Comme on peut le voir sur la capture d'écran suivante, j'ai plusieurs fois le même nom mais qui fait référence à des classeurs différents (Cf par exemple "NumObj".
Je cherche donc à pouvoir supprimer par une macro ces noms qui sont inutiles.
J'ai pensé passer par une macro qui me liste les noms (Voir dans mon fichier le module "List_Names") dans une nouvelle feuille "Liste_Noms", pensant que cela pourrait résoudre mon problème.
Voici le code de cette macro :
La ligne contenant ".Cells(i, 2).Value = "'" & nm.RefersTo" est celle qui est intéressante. En effet je dois concaténer un guillemet simple à la valeur "nm.RefersTo" car sinon il me manque des noms qui sont en double dans la liste. Pourquoi? Aucune idée.
Maintenant que j'ai la liste des noms dans ce nouveau classeur je voudrais pouvoir supprimer tous les noms qui font référence à un autre classeur que celui qui est actif.
Je ne sais pas comment faire, et c'est pour cela que je me tourne vers vous
Vous avez en pièce jointe mon classeur, de manière à visualiser où j'en suis.
Remarques :
1) - L'onglet du ruban "Outils de saisie" n'est pas actif, donc ne pas l'utiliser.
2) - Les noms barrés en rouge sur la feuille "Infos" n'existent pas encore et seront mises en place plus tard.
Donc si une personne (ou plusieurs) avait la gentillesse de m'aider je leur en serait reconnaissant.
En attendant je vous souhaite à toutes et tous une bonne soirée.
J'ai créé un petit outil me permettant de suivre mes ventes dans un vide-grenier permanent.
Ce classeur est composé de plusieurs feuilles qui contiennent la liste des objets mis en vente, la liste des catégories et types d'objets, les marques de ces objets, ....
Dans ce classeur je gère des noms soit pour les tableaux structurés que j'utilise soit pour des cellules contenant des paramètres permettant l'évolution de compteurs.
Comme je fais des mises en vente espacées dans le temps, je veux reprendre dans un nouveau classeur ayant la même structure de feuilles des données provenant d'anciennes ventes. Par exemple j'ai un classeur contenant les résultats d'une vente du mois de septembre avec des objets qui n'ont pas été vendus, et je voudrais récupérer certaines feuilles de ce classeur dans un nouveau classeur pour une vente en Janvier.
Cette partie ne me pose pas de problèmes, j'arrive à récupérer les feuilles que je veux, grâce à une macro que se lance à l'ouverture du classeur. Pour ne pas importer à chaque ouverture des feuilles j'ai un flag (feuille params) que je positionne à la valeur 1 après avoir importé les feuilles.
Lors de l'importation des feuilles du fait que les classeurs ont la même structure j'ai le problème suivant :
Comme on peut le voir sur la capture d'écran suivante, j'ai plusieurs fois le même nom mais qui fait référence à des classeurs différents (Cf par exemple "NumObj".
Je cherche donc à pouvoir supprimer par une macro ces noms qui sont inutiles.
J'ai pensé passer par une macro qui me liste les noms (Voir dans mon fichier le module "List_Names") dans une nouvelle feuille "Liste_Noms", pensant que cela pourrait résoudre mon problème.
Voici le code de cette macro :
VB:
Public Sub List_Names()
Dim nm As Name, i As Long
Worksheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "Liste_Noms"
i = 1
'On Error Resume Next
For Each nm In ActiveWorkbook.Names
i = i + 1
With ActiveSheet
.Cells(1, 1).Value = "Nom"
.Cells(1, 2).Value = "Se réfère à"
.Cells(i, 1).Value = nm.Name
.Cells(i, 2).Value = "'" & nm.RefersTo
End With
Next
With Range("A:B")
.EntireColumn.AutoFit
End With
MsgBox "Nombre de nom(s) : " & i, 64, "Information"
End Sub
La ligne contenant ".Cells(i, 2).Value = "'" & nm.RefersTo" est celle qui est intéressante. En effet je dois concaténer un guillemet simple à la valeur "nm.RefersTo" car sinon il me manque des noms qui sont en double dans la liste. Pourquoi? Aucune idée.
Maintenant que j'ai la liste des noms dans ce nouveau classeur je voudrais pouvoir supprimer tous les noms qui font référence à un autre classeur que celui qui est actif.
Je ne sais pas comment faire, et c'est pour cela que je me tourne vers vous
Vous avez en pièce jointe mon classeur, de manière à visualiser où j'en suis.
Remarques :
1) - L'onglet du ruban "Outils de saisie" n'est pas actif, donc ne pas l'utiliser.
2) - Les noms barrés en rouge sur la feuille "Infos" n'existent pas encore et seront mises en place plus tard.
Donc si une personne (ou plusieurs) avait la gentillesse de m'aider je leur en serait reconnaissant.
En attendant je vous souhaite à toutes et tous une bonne soirée.