| |||||
| Dernière réponse | |
|---|---|
| Sujet : Macro qui s'exécute sur Personal.xlsb | |
| scaryfan | :hello: Effectivement, on va vérifier ça... :) |
| Aperçu |
|---|
| Vue Rapide de la discussion |
|---|
| scaryfan | :hello: Effectivement, on va vérifier ça... :) |
| rufo | Question bête : le collègue a la même version d'Excel que toi ? |
| scaryfan |
|
| MaybeEijOrNot | Et si tu fais juste un :
|
| scaryfan |
|
| MaybeEijOrNot | Mais comment tu sais que la macro reste sur le PERSONAL.xlsb ?
Et c'est quoi ta modif' au final ? |
| scaryfan | MaybeEijOrNot,
Désolé de t'embêter encore, mais ça ne fonctionne pas. La macro reste sur le PERSONAL.xlsb... :fou: J'ai testé sur mon poste à nouveau et ça fonctionne... il y a donc bien quelque chose qui est différent chez mon collègue... :fou: |
| scaryfan | OK je teste tout à l'heure ! :wahoo: |
| MaybeEijOrNot | Dans ce cas là, adapte la ligne :
cName = Left(cName, Len(cName) - 1) Le -1 élimine le dernier caractère, tu dois en éliminer plus. Si tu tiens au .activate, tu peux enlever le With ... End With. Et tu peux faire le .activate directement sur Wbk (Wbk.activate) qui correspond à l'occurrence dans Workbooks quand la boucle a été interrompue. |
| scaryfan |
|
| MaybeEijOrNot | Rien à voir, le .activate va passer le classeur en "actif" donc oui la macro va s’exécuter dessus mais ce n'est pas le problème. Le problème c'est de sélectionner lequel est à activer. Ici tu actives le premier sans savoir lequel sera le premier. T'assurer d’exécuter la macro dans le bon classeur c'est une dizaine de lignes assez simples au max. Pour vérifier une "extension" tu peux split le nom avec le point et garder la dernière occurrence. Pour vérifier si un nom revient à chaque fois tu peux utiliser InStr, quand tu sais que tu as des longueurs fixes tu peux utiliser les fonctions Left, Right et Mid complétée de Len (longueur totale de la chaîne). De manière générale, le .activate est à éviter, tu n'en as pas besoin, suffit d'utiliser le With. D'ailleurs je corrige mon exemple (pas besoin de repréciser Wbk à l'intérieur du With, c'est tout son intérêt) :
|
| scaryfan |
|
| MaybeEijOrNot | Non il faut parcourir les différentes occurrences de Workbooks en bouclant dessus puis vérifier le nom à chaque fois grâce aux fonctions de manipulation des chaînes de caractères.
En fonction du motif à détecter, tu as des fonctions plus ou moins appropriées : https://silkyroad.developpez.com/VB [...] aracteres/ Ex :
|
| scaryfan | :??: Et puis, je le réécris : la macro fonctionne correctement sur mon PC mais pas chez mon collègue... :??: |
| scaryfan |
|
| MaybeEijOrNot | Oui mais comme tu le peux constater c'est forcément bancal de lancer une macro sans préciser où elle doit s'exécuter.
Avec l'objet Workbooks tu peux accéder aux différents classeurs ouverts, tu peux peut-être commencer par indiquer dans ta macro qu'elle doit s'exécuter dans le premier classeur dont le nom se termine par .xlsx ou du moins pas par .xlsb. Après c'est à toi de voir quel motif est le plus approprié, parce qu'un classeur nommé "TrucmachinXXX.xlsx" ce n'est pas très compliqué à identifier. |
| scaryfan |
|
| MaybeEijOrNot | Salut,
As-tu bien précisé les noms des classeurs dans la macro ? |
| scaryfan | Salut,
J'ai un souci avec une macro que j'ai installée chez un collègue. Tous les matins, j'ouvre un fichier XLSX que je reçois par mail : "Trucmachin.xlsx" Ensuite, j'exécute une macro qui est enregistrée dans un module du fichier PERSONAL.XLSB. La macro met en forme le fichier Trucmachin.xlsx et le découpe ensuite en plusieurs fichiers A.xlsx, B.xslx, C.xlsx... etc. Chez mon collègue, la macro s'exécute mais sur le fichier PERSONAL.xlsb... :??: au lieu du fichier Trucmachin.xlsx... :fou: Quel est le problème ? Je précise bien que chez moi, la macro s'exécute bien sur le fichier "Trucmachin.xlsx"... Merci pour vos retours. scaryfan |





