Macro très lente sur Excel 2010
Merci mais ça marche pas....
Bien sûr que si.
Maintenant "ça ne marche pas" ne veut rien dire du tout.
"En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)"
ça me copie bien mon nom d'onglet mais l'efface aussitôt pour me le remplacer par le nom de l'onglet suivant.
J'ai trouvé une autre solution qui me convient dans les faits,mais je ne la comprends pas......
Sub NomOnglet()
Dim i As Integer, derLign As Long
Dim Sh As Worksheet
For Each Sh In ActiveWorkbook.Sheets
Application.ScreenUpdating = False
Sh.Activate
For i = 2 To Sheets.Count
derLign = Sheets(i).Range("A65536").End(xlUp).Row
Range("d1").Value = "Gestionnaire"
Range("e1").Value = "Fichier"
NomFeuille = ActiveWorkbook.ActiveSheet.Name
Range("d2:d" & derLign) = NomFeuille
NomFichier = ThisWorkbook.Name
NomFichier = Left(NomFichier, InStr(1, NomFichier, ".") - 1)
Range("e2:e" & derLign) = NomFichier
Next i
Next Sh
Application.ScreenUpdating = True
End SubNotament le "sh"?
Tant que tu n'auras pas dit précisément ce que tu veux faire je n'aurai pas grand chose à ajouter.
Voilà.....
Nous avons 3 classeurs Excel (pour le moment, d'autres vont arriver) diviser en plusieurs onglets nominatif. Sur chaque onglet le nom de employé avec à l’intérieur des coordonnées clients. Parfois ces clients nous appellent. Afin de savoir de façon simple qui s'occupe de son dossier, je veux créer un fichier excel qui regroupe toutes les informations, y compris de nom de l'employé qui s'en occupe (que l'on retrouve à l'onglet), le nom du fichier (afin de savoir sur quel fichier de repérer), de telle façon que lorsque le client appelle on puisse le retrouver rapidement la personne qui s'en occupe. Mon fichier tous classeurs réunit compte 14268 lignes.
Mais j'avance, tout doucement, mais j'avance.
J'avais déjà créer un fichier, mais comme dit lors de mon premier message, il est très lent. De plus ton idée de recherche "multicritère" me plait bien. Maintenant je veux le mettre en pratique et pouvoir regrouper toutes mes feuilles en une seule et la transférer dans ton fichier mais de façon automatique,
Je pense avoir été claire.
De plus ton idée de recherche "multicritère" me plait bien.
Tant mieux.
Mais si tu déroules la flèche du filtre automatique et que tu saisis dans Rechercher ça te fait exactement la même chose pour juste 2 clics de plus. Comme quoi c'est plus important de connaitre les fonctionnalités d'excel.
Ce n'est pas ce que j'appelle des explications précises, et avec ton code boiteux difficile d'en tirer des conclusions fiables.
J'ai cru deviner que le nom d'onglet était celui le Gestionnaire dans la BD. Appelle les choses par leur nom...
On ne sait même pas où sont les données client que tu veux récupérer.
Donc tu déposes un fichier exemple avec 2 feuilles, 3 lignes de données pour chaque en précisant quoi doit aller où clairement et en détail (feuille, colonne, ref cellule, etc)
Et avant d'ajouter des nouvelles données il faut se poser la question de ce que tu fais des anciennes si le fichier à déjà été importé. Les supprimer toutes ?
Je ne suis vraiment pas douée en VBA mais en ce qui concerne l'utilisation Excel je me débrouille et je sais très bien que ta solution proposée revient au même que la fonction recherche à l'aide des filtres.... Mais visuellement, c'est mieux....
Pour se mettre en situation voici comme se présente les fichiers originaux qui se trouve ci-dessous Classeur1 et Classeur2 regroupent mes données brutes.
Résultat_souhaité : comme son nom l'indique ce que j'aimerais obtenir.
Merci pour ton aide
Ah ben oui, c'est tout de suite plus clair et plus complet
Par contre tu n'as pas répondu ce que tu veux faire des anciennes valeurs si tu importes à nouveau un fichier pour mise à jour ?
Après l'import tu auras des doublons et tu ne pourras plus distinguer les nouvelles données des anciennes.
Soit il faut toutes les virer, soit il faut mettre un suffixe à une valeur pour les distinguer.
Lorsque je vais importer un nouveau fichier, en théorie, ce sera des nouveaux clients donc il faut les conserver les anciennes valeurs, d'où l'idée d'insérer un nom de fichier pour les retrouver. Ce sera toujours des ajouts de fichiers et non des remplacements de fichiers.
Il y aura des doublons c'est sur, mais ces doublons sont présents dans les fichiers sources d'origine donc je dois pouvoir les retrouver (via le nom du fichier).
Maintenant si il faut créer une clé, le champ numérique dans la colonne A du fichier source est une valeur unique (puisque n°de client).
Je ne sais pas si ça serait plus facile, lors d'une mise à jour, d'ajouter les nouvelles données ou bien supprimer toutes les données et ajouter les données de tous les classeurs compilés ?
Au début tu dis qu'il n'y aura que des ajouts de fichiers et à la fin qu'il y aura bien des mises à jour.
Faudrait savoir...
Si tu ré-importes le même nom de fichier qui a été modifié ou complété il faut décider quoi faire avant.
- soit supprimer les anciennes données
- soit les marquer. Par exemple compléter le nom du fichier avec : "nomFich (av. jj/mm/aa)". jj/mm/aa étant la date de maj, et tu traites manuellement.
colonne A du fichier source est une valeur unique (puisque n°de client).
ça me parait indispensable qu'il soit présent dans BD.
ok ?
Bonjour
La clé (code client) n'est utile que pour la construction de la BDD, elle n'a aucune utilité pour la l'usage du fichier. Comme tu me parlais de clef j'ai mentionné ce détail
soit il faut mettre un suffixe à une valeur Je ne me contredis pas en disant qu'il faut ou pas garder les anciennes valeur. .... je demandais ce qui était le plus facile.
Aujourd'hui le fichier est construit à l'aide des données des "classeur1" et "classeur2" regroupés, par la suite vont venir s' ajouter les données d un classeur3 puis 4 etc..... il faut conserver toutes les lignes mêmes les doubles puisque pas traitées par le même gestionnaire.
Bonjour,
La clé (code client) n'est utile que pour la construction de la BDD, elle n'a aucune utilité pour la l'usage du fichier. Comme tu me parlais de clef j'ai mentionné ce détail
Si, elle est nécessaire.
Pour tes doublons je ne vais pas refabriquer une clé avec Nom, prénom et date de naissance alors qu'une clé client unique fiable existe déjà.
Je ne me contredis pas en disant qu'il faut ou pas garder les anciennes valeur. .... je demandais ce qui était le plus facile.
Aujourd'hui le fichier est construit à l'aide des données des "classeur1" et "classeur2" regroupés, par la suite vont venir s' ajouter les données d un classeur3 puis 4 etc..... il faut conserver toutes les lignes mêmes les doubles puisque pas traitées par le même gestionnaire.
Si, tu te contredis dans la mesure où tu ne comprends pas la question et tu réponds à coté.
Tu importes fichier1.
Si ce fichier est modifié (ajout d'une ligne ou modification suite à évolution ou faute de frappe sur un nom etc) il faudra le ré-importer, ou bien tout simplement réimportation suite à une fausse manip, tu auras toutes les lignes de ce fichier en double.
Donc soit on les vire avant, soit tu préfères contrôler et valider les éventuelles modifs et on marque les anciennes valeurs d'une façon ou d'une autre pour les distinguer des nouvelles.
Donc ton choix ?
Fichier1 ne sera jamais modifié. Je préfère la solution 2, on vire.
Quant à la clé, je suis d'accord avec toi pour la gestion des doublons, sauf que je viens de m'apercevoir dans le fichier initial, que ce que je croyais être une valeur unique dans la colonne A ne l'est pas. Le client dispose de plusieurs n°, selon son contrat. Donc la seule manière de savoir qu'ils sont en double est le nom,prénom et date de naissance. Mais il est toujours possible de construire cette clé en concaténant les trois données. Comme je suis déjà contrainte de rajouter 2 colonnes aux fichiers sources (Gestionnaire et fichier), il suffit d'en mettre une 3ème.
Ok, je pense que j'ai tout, je vois ça un peu plus tard.
Jette un oeil de temps en temps des fois que j'ai une nouvelle question en cours de réalisation.
D'accord merci beaucoup
Bonjour,
1) import
Comme je n'aime pas trop travailler avec l'ActiveWorkbook (on ne sait jamais si c'est vraiment un bon classeur qui est actif) j'ai mis sur le bouton MAJ une boite de sélection de fichiers.
On peut en sélectionner plusieurs avec Shift+clic ou Ctrl+clic. Ils ne doivent pas être ouverts au lancement de la macro
Si c'est lent tu peux suivre l'avancée dans la barre de status en bas.
Je préfère laisser le nom du fichier en entier qui représente mieux ce qui est désigné.
Ajout d'un hyperlink qui ouvre le fichier sur l'onglet du gestionnaire avec la ligne du client sélectionnée. A supprimer si tu préfères la vitesse d'exécution et que ces liens ne servent pas.
2) doublons
- double-clic sur un nom pour filtrer ses clients en doublon avec un autre gestionnaire (si j'ai bien compris ce que tu voulais).
- double-clic en E pour annuler le filtre
Comme il y a eu beaucoup d'échanges pour avoir toutes les réponses je ne sais plus s'il y avait autre chose à voir.
A tester et remonter les anomalies assez vite stp
eric
Bonjour,
Beau travail, mais les données ne sont pas importées, j'ai un message qui dit : "1 fichiers importés (je ne sais pas où?) - 0 lignes supprimées (normal) - 0 lignes ajoutées.
Je ne sais pas ce que je fais de mal.
Quant au doublons, si j'ai bien compris tu fais une sélection par nom ? C'était une sélection par gestionnaire que je voulais, mais je me rendrais mieux compte lorsque j'aurai réussi à importer mes données.
MERCI BEAUCOUP
J'ai vu en lisant ton code ce qui n'allait pas, j'ai corrigé (en fait la cellule A1 ne contenait pas "Code"), je continue mes explorations.....
Oui, je fais un contrôle minimum sur la feuille pour m'assurer qu'elle correspond à ce qui est attendu avant d'importer.
Maintenant si tes fichiers ne respectent pas ce que tu m'as fourni ça marche moins bien forcément.
Quant au doublons, si j'ai bien compris tu fais une sélection par nom ? C'était une sélection par gestionnaire que je voulais
E est le nom du gestionnaire non ?
Si ce n'est pas ce que tu voulais explique mieux
Les fichiers correspondent, E est la colonne qui correspond aux gestionnaires.
Je n'avais pas le fichier ouvert sous les yeux et quand tu écris :
double-clic sur un nom pour filtrer ses clients en doublon avec un autre gestionnaire (si j'ai bien compris ce que tu voulais).J'ai mal compris et crus que je devais double cliquer sur un nom et non pas sur le gestionnaire...
Lorsque j'ai essayé par la suite, j'ai créé un doublon, mais gardé le même gestionnaire, message "Pas de doublon". J'ai donc essayé en changeant le nom du gestionnaire et là plus de souci.
C'est un très bon fichier, qui fera ses preuves à l'utilisation et lorsque j'aurai exporter mes plus de 16000 clients. Je ne vais pas conserver le lien hypertexte, car il n'a pas d'utilité pour nous mais je vais le garder dans un coin au cas où.
Je vais dans un premier temps, rassembler toutes les données, de tous les onglets de chaque fichier sur une feuille unique de chaque classeur que je vais nommer "Recap". Et je reviens vers toi au besoin.
Merci encore
Oui, teste dans tous les sens.
On ne peut pas imaginer toutes les combinaisons faites par un utilisateur, ni les éventuels pb rajoutés par un réseau.
En rapidité c'est correct ?