Restreindre l'ouverture d'un fichier à une version d'Excel ET à une version d'OS

SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 - 4 déc. 2011 à 01:44
SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 - 11 déc. 2011 à 15:13
Bonsoir le Forum,

Je développe une macro qui est maintenant sur la fin. Néanmoins je rencontre quelques difficultés de compatibilité.

J'ai développé la macro sous Excel 2007 (version 12.0) et sous Windows XP (32-bit). Elle fonctionne très bien.
-Elle ne fonctionne plus à l'ouverture par Excel 2003.
-Elle ne fonctionne pas mieux avec Excel 2007 depuis Windows Seven (64-bit).
-Et enfin elle ne s'ouvre pas non plus avec Office 2011 pour Mac.

Pour éviter à l'utilisateur de se retrouver face à un message d'erreur, j'aimerais limiter l'ouverture du fichier Excel.
Les deux paramètres sont donc la version d'Excel, et la version de l'OS.

J'ai cherché sur le net et j'ai réussi à contrôler la version d'Excel. Ça fonctionne. Voici le code :


Private Sub Workbook_Open()

If Val(Application.Version) <> 12 Then
    MsgBox "L'application a été élaborée à l'aide d'office 2007 (version 12.0) sous Windows XP (32-bit)." & Chr(10) & Chr(10) _
    & "Vous utilisez actuellement la version " & Application.Version & " d'office qui tourne sous " & Application.OperatingSystem & "." & Chr(10) & Chr(10) _
    & "Le fichier va se fermer pour des raisons de non compatibilité."
    Application.Quit
End If

End Sub



Malheureusement je n'ai pas trouvé le moyen de contrôler la version de l'OS ou alors s'il est en 32 ou 64 bit.

Ma question est alors la suivante :

Peut-on contrôler la version de l'OS ou le type de bus (32 ou 64) du système au même titre que la version d'office ?

Merci à ceux qui pourront m'aiguiller.

Bien cordialement,

André

61 réponses

SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 1
9 déc. 2011 à 22:57
Bonsoir tout le monde,

Ucfoutu pour la clé de la base de registre qui t’intéressait voici ce que j'ai trouvé. Un seul fichier dont le chemin est "C:\WINDOWS\system32\ieframe.dll"

Je pense que tout est normal la encore.

En ce qui concerne le message d'alerte qui concerne l'affichage des graph qui contiennent des mises en formes 3D j'aimerais tester une idée que j'ai en tête avant de te faire parvenir un éventuel fichier.

Mon idée est la suivante : Si je fait afficher un graph simple (pas de mise en forme 3D tel que les biseaux ou les ombres) il n'y a pas de message d'alerte. Donc je vais enlever les mises en formes complexes, exécuter la macro puis juste avant de sortir de la macro je parcourrais toutes les feuilles à la recherche de graphs. Et si je trouve un graph alors je ferais une mise en forme. J'espère que de cette façon je ne déclencherais plus le message d'alerte.

Je te dirais tout ça dès demain car pour ce soir je suis naze^^ Si j'épuise toutes mes idées, je te préparerais un petit fichier. De toute façon tu connais la major partie de mon code car presque toutes les idées viennent de toi. Donc au final, c'est un peu ton code je trouve ;)

Aucun soucis la dessus pour ma part.

André
0
SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 1
10 déc. 2011 à 01:17
Bon finalement je n'ai pas résisté à la tentation de savoir si mes idées fonctionneraient.

J'ai entamé une série de tests. Toutes mes idées se sont vues inefficaces face au problème du message d'alerte d'Excel.


J'ai néanmoins compris certaines choses. Le problème vient du fait que mon graphique utilisent un nombre élevé de données. Les contraintes sont les suivantes :

-Un nombre de données toujours aussi élevé
-Utilisation obligatoire de la forme 3D
-Suppression du message d'alerte à la création du graph

Moi perso je n'ai plus vraiment d'idées. Je ne sais pas comment aborder le problème. A part supprimer la forme 3D pour résoudre le problème, mais bon j'y tiens !

Je rappel que les formes 3D (biseau notamment) ne sont disponibles que sur Excel 2007. De plus le fichier Excel que je propose en téléchargement est une version la plus simple possible qui met en évidence le problème. J'ai pas pu faire plus simple^^

Ucfoutu si tu as des questions sur le sujet n'hésite pas une seconde ;)

André


Les liens :

Excel 2003 : http://www.packupload.com/Z101AVYLBQQ

Excel 2007 : http://www.packupload.com/WULDSTRVDW4


Ps : A voir si le souci du message d'alerte est vite résolu, sinon je peux tout aussi bien créer une nouvelle discussion pour ne pas encombrer l'actuelle discussion. A voir si on peut résoudre tout ça en une réponse qui sait...^^
0
SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 1
10 déc. 2011 à 01:20
Ah oui j'oubliais, dans le code j'ai mis les lignes qui causent le problème en "'" (en vert quoi).

Ce sont ces 4 lignes du code qui génèrent l'erreur. Bien penser à les activer pour avoir le message d'alerte.

André
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
10 déc. 2011 à 07:02
Bonjour , André,
Bien dormi ?

Et dans cette affaire, tu accuses à tort le webBrowser sur la seule base du fait que le problème "surgit" juste après son rétablissement ? Un peu comme si tu accusais le changement d'un pneu d'être le responsable d'une difficulté de démarrage depuis son changement ? Tu ne trouves pas que c'est un peu "léger" ?

Bon ! Moi, je vais te parler de choses plus terre à terre et te rafraichir la mémoire et te montrer que la mienne (de mémoire) est excellente et qu'elle était en tout état de cause sans faille lorsque je t'ai dit plu haut :
Autre chose, à propos de ton post-scriptum === >>
Je ne sais pas pourquoi, mais j'ai très vaguement l'impression de ce que ce problème était déjà présent antérieurement et qu'il avait été contourné par une solution que je t'avais donnée, en te précisant même que je ne l'aimais pas.
Il est vraisemblable que tu as modifié l'ordre de déroulement des choses dans la partie concernée de ton code) et qu'il faille donc tout simplement placer ailleurs le Sendkeys que je t'y avait fait ajouter


Dans l'ordre :
A/ ce qui est certain
1) il y a un peu plus de trois mois, tu avais exactement ce même problème (et le webbrowser de l'époque n'était pas celui, plus propre, que tu as rétabli )
2) je t'ai à l'époque donné une solution qui marchait (qui marche toujours) en te disant que je ne l'aimais pas (ce que je continue à dire)
3) tu as appliqué cette solution et t'en es déclaré satisfait
B/ ce que je devine
- Tu as l'habitude de travailler sur plusieurs moutures de tes applications, réparties dur plusieurs répertoires (pour faire tes essais)
- Elles sont à ce point nombreuses que tu ne sais plus trop laquelle est la "der des der" et que tu as, à un moment ou à l'autre, repris tes tâches sur une mouture d'avant la modif que je t'avais fait apporter (moyennant quoi : ===>> aux oubliettes, la modif ===>>> plus là sur les nouvelles versions !)
- et bien évidemment : tu t'en aperçois maintenant et cries partout "C'est la faute au WebBrowser" !!!

Pas vraiment très sérieux, çà, André !

La preuve de tout ce que je te dis là ? ====>> LA VOILA !

Allez ====>>> rajoute ce sendkeys (disparu au cours de tes "pérégrinations") et revalide les instructions que tu as mises en commentaires, hein !
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 1
10 déc. 2011 à 10:14
Bonjour le Forum,

Oui oui bien dormi. Pas beaucoup mais bien dormi quand même. Nouvelle journée, nouveaux problèmes^^

Je me suis sans doute mal exprimé (ce qui m'arrive malheureusement souvent) mais je n'ai jamais voulu dire : "Avec IE 6 TOUT fonctionnait bien, au seul passage vers IE 8 j'ai le massage d'alerte sur les graph. Bilan c'est la SEULE faute du WebBrowser vu que je n'ai changé que ça entre temps."

C'est un simple constat que j'ai remarqué. Au simple changement d'Internet Explorer, je me suis retrouvé avec de nouvelles difficultés que je n'avais pas juste avant. Rien de plus^^ Ce dont je suis sur, c'est qu'il a eu un changement au passage vers IE 8. Pourquoi ? Ben la je peux accuser très ouvertement si tu veux : " Avec IE 6 TOUT fonctionnait très bien, maintenant que j'ai seulement mis IE 8 j'ai des choses qui ont changés. Bilan, il s'est passé un truc du au changement de IE".

Ce qui me semble plus qu'évident. Après si cela vient du WebBrowser, de IE 8, d'une clé de registre modifiée d'une incompatibilité entre composants ou je ne sais quoi...ben je peux pas dire. Mais il s'est passé un truc quand même

Dsl si j'avais pu laisser entendre un autre raisonnement de ma part. Bref ce n'est pas si grave.


En ce qui concerne le sendkeys et ce problème que j'avais déjà eu par le passé et dont tu avais apporté une bonne alternative. Heureusement que je m'en souviens bien, c'était à l'origine mon problème quand même^^. Le truc que je n'arrive pas à comprendre, c'est que les sendkeys ont bien été intégrés pourtant. Mais le message persiste encore dans ma macro. Alors en effet, dans le fichier que je t'ai envoyé si tu rajoute la ligne de code suivante ça fonctionne :

SendKeys ("{ENTER}") 'Permet de s'affranchir du message d'alerte pour le ralentissement


Je l'ai justement retiré du code pour trouver éventuellement une autre parade car celle ci ne semblait plus être efficace sur la multitude de graphs que j’emploie. Mais en elle même la solution fonctionne parfaitement. C'est clair. Sauf que maintenant même avec le sendkeys je reçois le message d'alerte.

En ce qui concerne le souci de versionning de mes fichiers, tu te trompe la aussi. Depuis le début je n'ai qu'un seul et unique même fichier Excel. Quand je test une idée, je fais une copie de l'Excel et je travail sur cette dernière. Si je suis satisfait des modifs je les applique alors proprement à la version originale et supprime immédiatement la copie.

En faisant ainsi je n'ai toujours qu'une même version sous un seul fichier qui évolue constamment. Je déteste avoir des fichiers partout. Et de temps en temps je sauvegarde ce fichier Excel quand il a suffisamment évolué et que je n'ai pas envie de tout perdre^^

Par contre tu me met le doute sur un point pour rester honnête. Certes j'ai appliqué ta solution qui fonctionnait très bien il y a 2 ou 3 mois sur les rares 2 ou 3 graph que j'avais à l'époque. Et pourtant hier soir après avoir parcouru les dizaines de graph de mon fichier Excel, j'ai le sentiment de pas avoir vu ce "sendkeys" sur TOUS les graphs. (Les graphs ne sont pas tous construits de la même manière. J'ai du en créer de nouveaux il y a 2 semaines. Et il est probable que j'ai recréer un graph sous vba depuis le début SANS penser à appliquer la correction par le sendkeys. Ça me parait plus que probable maintenant). J'ai peut être perdu à un moment donné l'info. Ce qui pourrait causer tout ça.
Je vais jeter un coup deuil si mes soupçons sont fondés. Si c'est le cas ça pourrait tout résoudre. Car en effet, si tu ajoute la ligne de code que tu proposais le message disparaissait. Et si le message persiste c'est que tous les sendkeys ne sont pas mis en place. Ça tiens la route ce que je dis la ! Yess

Bon je file vérifier ceci. En tout cas merci Ucfoutu tu fais bien avancer le schmil blik^^

A tout de suite pour un rapide retour d'info.

André
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
10 déc. 2011 à 10:24
C'est çà !
Tu vas les trouver une après l'autre, tes absences de "Sendkeys"
Et ce n'est pas un contrôle WebBrowser qui peut avoir fait disparaître des lignes de code, hein
Le message concerné est un message de Excel. Pour modifier le comportement de Excel, il faudrait mille fois plus (intervenir sur le source de Excel)! et il faudrait ensuite recompiler le logiciel Excel lui-même pour en faire une "version exceptionnelle" . Tu te rends compte ? (ce n'est pas possible, carrément)


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 1
10 déc. 2011 à 11:08
Bon ben je suis un peu déçu car je n'ai pas résolu le problème. J'ai bien remis TOUS les sendskeys mais rien n'a faire.

Je n'en comprends pas la raison sérieusement. Pourquoi avant ça fonctionnait et maintenant plus, pourquoi le message d'alerte ne se déclenche t'il pas au même nombre à chaque fois ???

Grand mystère pour moi.


Du coup je t'ai préparé en express un nouveau fichier Excel Ucfoutu. Si tu veux bien y jeter un euil.

C'est un infime partie de mon VRAI code. Je ne fais afficher que 3 graphs qui ont tous les sendkeys et pourtant le message est tjs présent.

Petites aides pour faire fonctionner le bazard :

-Ouvrir le fichier Excel (2007)
-Autoriser les Macros si besoin est
-Double cliquer sur le bouton rouge qui devrait apparaitre en haut à gauche de ton écran
-Le fichier que tu dois sélectionner est celui mis dans l'archive

C'est très simple rassure toi.

En cas de besoin je suis la pour des infos.

André

PS : Le lien,

http://www.packupload.com/YMNMDH2U4HW
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
10 déc. 2011 à 11:14
Je veux bien regarder, mais cela te dérangerait-t-il de faire un zip , plutôt qu'un rar ?
Je n'ouvre pas un .rar.

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 1
10 déc. 2011 à 16:02
J'ai du m'absenter urgemment ce matin. Je ne pouvais pas te faire parvenir les fichiers bien que connecté via le smartphone. Dommage.

Bien voici donc les deux fichiers :

http://www.packupload.com/PB4E5KJRP07

http://www.packupload.com/OPRKIJH4O4W

André
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
10 déc. 2011 à 17:16
Hé bé !
Ce n'est pas le mécanisme en soi, qui a un problème, mais ton programme lui-même !

Constatations 1 : au premier lancement, tout va bien - au second, cela commence à aller mal - au 3ème : pire, etc ...
plus on avance, et plus il faut laisser de temps à la machine pour s'en "remettre" (elle n'a plus la force - le fait très lentement - de mettre à jour tes petites choses ===>> et le sendkeys arrive alors qu'elle n'en a pas encore terminé avec la tâche précédente ===>> il se perd donc dans la nature et quand la tâche passe à la suivante ===>> ton message arrive !

constation 2 : très rapidement on arrive à une consommation de plus de 100 MO (rien que ça, tiens donc ! ...) pour un classeur d'à peine 99 KO.

On dirait que les tâches s'empilent, n'ont pas vraiment le temps d'être exécutées et le pire est que cela va s'amplifiant d'un lancement à l'autre

En résumé : il y a un gros problème de conception et de gestion de la mémoire (et là est la raison de tout).
Je vais regarder ton appli de plus près ce soir, à la recherche des fuites évidentes.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 1
10 déc. 2011 à 18:13
Oulala tu me fait peur Ucfoutu quand tu dis des choses comme ça

Bon en même temps vu mon niveau en programmation, ça ne m'étonne pas du tout. J'ai commencé à programmer depuis moins d'un an. Et pour être franc, mon meilleur ami reste bien souvent l'enregistreur de macro. Signe que je ne maitrise pas le langage.
Mais au moins je parviens à faire des choses voir même de très belles choses.

Ce qui m'inquiète plus sérieusement, c'est le fait que le système se dégrade au fur et à mesure du lancement de la même tâche. Je ne l'ai pas constaté. Pour moi, j'ai toujours environ 20 secondes de traitement automatique et jamais je n'ai constaté un empirement. Je vais tester voir ça. Ce qui est aussi bizarre c'est que lors de phases de développement, j'ai eu à lancer de nombreuses fois à la suite mon programme et la encore je n'ai pas constaté le souci.
Ce qui m’inquiète également, c'est que le code que tu possède est le vrai code que j'utilise. Donc s'il est si mal fait que ça...Mon code l'est aussi. Sans vouloir être trop pessimiste, le fichier que tu as fait une centaine de lignes quand mon code final fait plus de 6000 lignes

Image juste le nombre de fois ou je sacage les temps de calculs dues à une programmation non optimisée de ma part. Whaou ça sens la catastrophe.

Ce qui me conforte sur le fait que tu aie raison (une fois de plus pour changer !) c'est que moi aussi j'ai constaté le fait que le message d'alerte déclenché par Excel n'est pas constant. Il peut en effet prendre du retard, ce qui créerait un décalage au fur et à mesure du désastre.

Aie aie aie !!! Et moi qui arrivait enfin à la fin de mon code. J'ai l'impression que je vais devoir changer un paquet de choses. Et zut !

Merci Ucfoutu pour ces précieux renseignements.

Je vais jeter un coup deuil sur la mémoire moi aussi...

André
0
SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 1
10 déc. 2011 à 18:55
Bien je suis allé jouer avec la mémoire du pc...

En effet, le système semble bien se dégrader. Je ne sais pas comment quels genres d'outils tu as utilisé Ucfoutu pour constater le problème. Voici comment je m'y suis pris :

-Je fait afficher le gestionnaire des tâches de Windows
-Onglet performances
-Tout en bas à droite j’obtiens l'indicateur de la charge dédiée

Voici quelques données accompagnées des tests très rapides engagés. J'ai directement testé la version définitive de mon code, qui a priori mettrait en évidence le plus gros décalage car il englobe très largement le petit bout de code que je t'ai envoyé. Et notamment le fait, que c'est plus représentatif de la situation.

Premier Test.
Charge dédiée initiale avant d'ouvrir le fichier Excel : 728 Mo
Ensuite j'ouvre le fichier et lance entièrement la macro : 790 Mo
Je ferme Excel et enregistre. Retour à la case départ : 728 Mo
Donc j'ai subi une augmentation de la charge dédiée de 62 Mo !!! Whaou
Aucune idée de ce que ça représente par contre. Serait-ce des données copiées dans la mémoire vive du système ??? Bref je vais jeter un oeuil sur le net ensuite.

Deuxième Test.
Charge dédiée initiale avant d'ouvrir le fichier Excel : 728 Mo
Ensuite j'ouvre le fichier et lance entièrement la macro : 790 Mo
Sans enregistrer, sans fermer Excel, je relance la marco : 795 Mo
Je relance de même une troisième fois : 800 Mo
Je met la en évidence la dégradation de la situation. Je décale de 5 Mo on dirais...

Bon en gros, si la macro est lancée plusieurs fois sur un système un peu flébard, on peut arriver à faire planter le PC due à l'augmentation de la charge dédiée. Perso j'ai 2 GO de ram donc je suis tranquille mais bon c'est pas une raison.

Je me sens un peu désarmé face à la situation. Je n'ai pas reçu de formation sur la programmation Excel. Je me suis lancé dans ce projet par plaisir. Et je me rends compte que c'est pas forcément facile tous les jours sans être armé ou accompagné par un pro. Piouf !

En ce qui concerne ce problème, je pense (je dirais j'ai plutôt que j'ai le sentiment) que ça pourrait venir du "Application.GetOpenFilename". Plutôt de la boucle qui permet de récupérer les données du fichier texte et de les intégrer dans le fichier Excel. C'est probablement lors de ce passage "compliqué" que ça fonctionne mal. Le reste je ne vois pas ce qui est catastrophique.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
10 déc. 2011 à 19:38
tu as mis le doigt dessus. Cette "dégradation", comme tu dis, correspond à une hémorragie... reste à savoir si VBA/Excel permet de la colmater (et là ... je réfléchis)
Non, par contre : GetOpenFilename n'a pas plus quoi que ce soit à y voir que n'a à y voir le WebBrowser


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 1
10 déc. 2011 à 19:57
Lol oki pour le WebBrowser

Dans tous les cas je maintient le fait qu'en utilisant le composant "Navigateur Web Mircrosoft" je ne rencontrais plus ce message d'alerte de Windows. Y a t'il un lien ? Très certainement. Lequel exactement ? Aucune idée.

Étrange^^ Mais bon ce n'est pas la première fois que j'ai été confronté à une situation particulière sous Excel et puis qui est devenue logique avec les bonnes explications.
Donc je suis sur qu'il y a une raison quelque part qui une fois identifiée nous paraitra à tous "évidente".

Je tente des recherches de mon coté également. Faut soigner Excel une fois de plus on dirait
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
11 déc. 2011 à 10:03
Ouais...
J'en suis à décortiquer, ligne par ligne (lignes non indentées, au passage), ce labyrinthe que tu as créé à l'aide de gestions d'erreurs, de goto, etc ...
J'en suis à supprimer les gestions d'erreurs (remplacées par autre chose) et les GOTO. Je commence par "réorganiser de manière lisible et "maintenable", quoi

Mais j'ai en dépit de ma perspicacité plusieurs interrogations restées sans réponse (et j'en ai besoin, si je ne veux pas faire de dégâts ailleurs dans ton code.

1) A quoi te sert la variable booléenne générale GOON, dont je vois bien que tu l'as fait changer d'état, mais sans nulle part la moindre expression conditionnelle bâtie sur cet état ?
2) dans ta macro MACRO_EN_MODE_PAS_A_PAS :
A quoi utilises-tu les variables Drapeau, ici1, ici2, start, et fin, dont certaines ont de surcroît un nom correspondant à des étiquettes de tes GOTO ?

Tes réponses me serviront à continuer à faire en connaissance de cause l'important "ménage" que j'ai déjà commencé à faire (il y a beaucoup de poussière ... )

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
11 déc. 2011 à 10:24
Et peux-tu également m'exposer la finalité de ce "coup de zouzgef" qui consiste à :
- boucler touytes tes feuilles pour voir si existe la feuille TEMPORAIRE0
- la créer (si elle n'existe pas)
- reboucler pour supprimer toutes les feuilles présentes sauf TEMPORAIRE0
- vider TEMPORAIRE0 systématiquement

Et plus drôle encore, finir, un peu plus loin dans toçn code, par renommer TEMPORAIRE0 en "DONNÉES BRUTES"

Euh ....
La finalité n'est-elle alors pas tout simplement de démarrer directement avec une seule feuille présente, vide et nommée "DONNÉES BRUTES" ? Car si oui : inutile de faire tous ces curieux détours !


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 1
11 déc. 2011 à 12:20
Bonjour Ucfoutu, le Forum,

Tu as dit "Lignes non indentées". Je ne sais pas ce que ça veut dire. Probablement que mon code n'est pas assez commenté je suppose ?

Mea culpa si c'est le bordel dans le code . Les prémices d'un débutant quoi. Tu dois péter des câbles à essayer de lire mon code.

Je vais te faire un résumé de ce que le code est censé faire pour que tu puisse imager plus facilement. A l'ouverture du classeur, je commence par faire afficher l'userform en haut à gauche de l'écran qui permet de lancer la macro. Ensuite c'est la que je vérifie les feuilles Excel.
En effet à chaque lancement de la macro, je désire supprimer toutes les feuilles existantes sauf 2 qui sont nommées "TEMPORAIRE0" et "IMAGE". ( J'ai viré ce qui concerne la feuille "IMAGE" car elle n'importait pas pour le problème du message d'alerte). Donc oui le but est de tout supprimer et commencer avec deux feuilles. Et en gros, si la feuille "TEMPORAIRE0" n'existe pas alors je la créer car je veux une feuille nommée "TEMPORAIRE0" et une autre "IMAGE". Par contre si la feuille "IMAGE" existe je ne la vide pas.
On peut dire que c'est le point de départ si tu veux. Je veux partir avec 2 feuilles dont une est "TEMPORAIRE0" complètement vide de tout, et une autre est "IMAGE" vide si on vient de la céer, ou alors dans l'état ou elle est si elle existe déjà.

Après c'est les autres procédures qui viennent récupérer cette feuille et la renommer si besoin est.

Donc c'est un peu tordu mais voila quoi. J'hésite à t'envoyer mon code en entier Ucfoutu. D'un coté tu auras TOUT pour TOUT comprendre, mais d'un autre coté tu auras un temps fou pour TOUT décrypter. Et tu vas péter des câbles à tout bout de lignes je pense^^. J'ai pas envie de te faire perdre ton temps, et encore moins que tu prenne autant la tête.

Mais si c'est nécessaire tu me dis. Je t'enverrais le code en message privé.

Maintenant tes questions :

-La variable publique GOON. Dans la procédure MARCO_EN_MODE_PAS_A_PAS elle est initialisée à True. Ensuite dans la procédure DONNÉES_BRUTES elle change d'état suivant une condition. Si elle change d'état alors je fais un retour en arrière pour afficher un WebBrowser. Mais la encore j'ai supprimer toute cette partie car j'ai jugé que ça ne servait à rien d'encombrer le code pour rien. Peut être serais ce mieux que tu ai le code en entier finalement je me dis...


Oki...Je m’apprêtais à répondre à ta deuxième question mais la encore c'est due au fait que tu n'as qu'une partie du code. Du coup j'ai pas pris le temps de supprimer tout ce qui ne servait à rien.

Ucfoutu, je pense que tu devrais avoir en ta possession le code en entier. Comme ça, toutes tes questions trouveront réponse plus facilement. Et si tu veux modifier des choses, elles seront modifiées directement sur la version définitive du code. Donc bien plus utile ainsi.
Mais en contrepartie, tu vas te retrouver face à un paquet de lignes plus ou moins commentées. Et tu risque de crier haut et fort lol.

Je préfère attendre ta réponse avant de te proposer le code.

André
0
SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 1
11 déc. 2011 à 13:05
Re,

Il y a un test que j'avais effectué et que peut être vous n'avez pas encore essayés. Sans utiliser la moindre macro, dans le fichier Excel que je propose, faites tracer manuellement un graph classique avec les données qui sont en première feuille. Une fois le graph tracé, appliquez une mise en forme 3D avec n'importe quel biseau proposé (outil de graphique/mise en forme/Effet de forme/Biseau). Normalement vous devriez avoir le message d'erreur apparaitre. Donc ça n'a rien à voir avec VBA au final non ?

Je me trompe peut être, mais je le vois comme ça perso.

VBA est gourmand en ressources, mais la on dirait que ça vient directement d'Excel plus que de VBA. Je sais pas trop, ça me dépasse perso.

André
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
11 déc. 2011 à 13:44
Ah ! tu vois à quel point il est nécessaire d'être précis, maintenant ?
1) je ne supprimes donc pas GOON (à toi de savoir ce que tu en fais ailleurs).
2) regarde ce que fait ceci :
 Application.DisplayAlerts = False
  Sheets(1).Cells.ClearContents
  Sheets(1).Name = "DONNÉES BRUTES"
  Dim sh As Worksheet
  For Each sh In Sheets
   If sh.Name <> "IMAGE" Then
      If sh.Index > 1 Then sh.Delete
   End If
  Next
  Application.DisplayAlerts = True

=>> une feuille DONNÉES BRUTES toujours présente et vide au démarrage
=>> pas de feuille IMAGE si_ aucune feuille IMAGE présente au lancement. Mais si feuille IMAGE déjà présente au lancement ===>> est toujours là et intacte (avec toutes ses données)
C'est cela, que tu veux ? ===>> réponse précise, s'il te plait.
3) je n'ai pas de réponse en ce qui concerne :
A quoi utilises-tu les variables Drapeau, ici1, ici2, start, et fin, dont certaines ont de surcroît un nom correspondant à des étiquettes de tes GOTO ?

alors même que le problème est différent de ce qu'il était pour GOON, puisque la portée de ces variables est limitée à la routine en cours !
4) pour savoir que qu'est un code indenté ===>>> regarde
if toto = titi then
   with tata
     .r = 10
     .w = 210
   end with
end if

(pseudo code) est indenté. On y distingue parfaitement les blocs et les instructions y contenues.
alors que
if toto = titi then
with tata
.r = 10
.w = 210
end with
end if

ne l'est pas et est difficile à maintenir
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 1
11 déc. 2011 à 14:32
1) inutile de supprimer la variable GOON car je m'en sert plus tard dans le code en effet.

2)C'est presque ça. Pour la feuille TEMPORAIRE0 oui tu as raison. Pour la feuille IMAGE, si elle existe on la laisse comme telle avec ses éventuelles données. Si elle n’existe pas alors on en créer une nouvelle vide. Je dois toujours avoir 2 feuilles au démarrage pour la suite du code.
Je post le code original que j'utilise actuellement. Il prends en compte la feuille TEMPORAIRE0 et la feuille IMAGE.

For i = 1 To Sheets.Count 'On test l'exsitence d'une feuille
    If Sheets(i).Name = "TEMPORAIRE0" Then
        GoTo Ici1
    End If
Next

Sheets.Add.Name = "TEMPORAIRE0" 'Créé toujours un onglet de départ

Ici1: 'Etiquette

For i = 1 To Sheets.Count 'On test l'exsitence d'une feuille
    If Sheets(i).Name = "IMAGE" Then
        GoTo Ici2
    End If
Next

Sheets.Add.Name = "IMAGE" 'Créé toujours un onglet de départ

Ici2: 'Etiquette

For i = Sheets.Count To 1 Step -1 'On supprime tous les onglets sauf deux
    If Sheets(i).Name <> Sheets("TEMPORAIRE0").Name And Sheets(i).Name <> Sheets("IMAGE").Name Then
        Sheets(i).Delete
    End If
Next

Sheets("IMAGE").Move After:=Sheets("TEMPORAIRE0") 'Permet de déplacer de manière relative des onglets
Sheets("IMAGE").Tab.Color = RGB(165, 165, 165) 'Met l'onglet en Gris
'Sheets("IMAGE").Visible = 0 'Pour cacher la feuille
Sheets("TEMPORAIRE0").Select 'On reviens sur la feuille principale pour poursuivre

Cells.Clear 'Vide la seule feuille restante
Cells.FormatConditions.Delete 'Vide la feuille des mises à jours conditionnelles
ActiveSheet.DrawingObjects.Delete 'Supprime les graphs et les boutons d'actions de la seule feuille active


Je pense que ça t'aidera. Je ne peut pas être plus précis que le code que j'emploie actuellement.

3) Pour les variables :
-Drapeau est une variable liée à la mise en forme conditionnelle. Avant de sortir définitivement de la macro je force manuellement l'activation de la mise en forme conditionnelle en changeant le contenu d'une cellule. Si je ne le fais pas, en sorti de marco la mise en forme conditionnelle ne prends pas effet et je dois le faire moi même en changeant le contenue de la cellule. Je place la encore le code qui fait référence à cette variable.

For i = 1 To Sheets.Count 'On test l'exsitence d'une feuille
    If Sheets(i).Name = "PARAMÈTRES IRIS" Then
        na = Sheets("TEMPORAIRE2").UsedRange.Rows.Count 'Compte le nombre de lignes dynamiques
        Sheets("PARAMÈTRES IRIS").Select
        Drapeau = Sheets("TEMPORAIRE2").Range("G5")
        Sheets("TEMPORAIRE2").Range("G5") = Drapeau
        Drapeau = Sheets("TEMPORAIRE2").Range("G6")
        Sheets("TEMPORAIRE2").Range("G6") = Drapeau
        Drapeau = Sheets("TEMPORAIRE2").Range("F5")
        Sheets("TEMPORAIRE2").Range("F5") = Drapeau
        Drapeau = Sheets("TEMPORAIRE2").Range("F6")
        Sheets("TEMPORAIRE2").Range("F6") = Drapeau
        Drapeau = Sheets("TEMPORAIRE2").Range("F" & na - 2)
        Sheets("TEMPORAIRE2").Range("F" & na - 2) = Drapeau
    End If
    
    If Sheets(i).Name = "CALIBRATION STATIQUE" Then
        Sheets("CALIBRATION STATIQUE").Select
        Drapeau = Sheets("CALIBRATION STATIQUE").Range("K12")
        Sheets("CALIBRATION STATIQUE").Range("K12") = Drapeau
    End If
Next


-ICI1 et ICI2 sont directement liées au point numéro 2)

-Start me permet de revenir au début du code si la variable GOON est à False. La variable GOON peut changer d'état dans la procédure "DONNEES_BRUTES". Si elle change d'état, alors on sors de la procédure, on revient dans la procédure "MACRO_EN_MODE_PAS_A_PAS" et on recommence au début la ou est placé l'étiquette Start.

-Fin est basé sur le même principe que Start.

Pour être le plus précis possible, je met à disposition un autre code ne contenant pas tout pour ne pas embrouiller, mais reprenant exactement le début du code.

Je pense que ça sera le plus simple. Et puis au moins on verra bien si le code est compatible sur plusieurs machines ainsi^^

Je prépare le fichier et d'ici 30 min le met en ligne. Tu auras toutes tes réponses et bien plus encore tu vas voir (Apparition du coeur du problème : Le WebBrowser !)


Je me dépêche.

André
0
Rejoignez-nous