Optimisation code Macro, Marco fonctionne plus et ferme le fichier

Hello tous les mondes.

Je reviens vers vous j’ai créé un fichier pour suivi d’évaluation pour les nouveaux, et quand j’ai voulu m’en servir aujourd’hui quand j’appuis sur le premier bouton « 1er Evaluation » sur l’onglet « Tableau de Bord » le fichier ce ferme.

Voici la façon que j’ai pensé à la création du fichier.

1er Etape :

Onglet « Tableau de Bord »

Bouton « 1er Evaluation ».

Il va simplement mettre un « Ok » sur la cellule « G2 » dans l’onglet « Evaluation »

2e Etape :

Onglet « Evaluation »

Bouton « Eval Fini »

Il va noter « oui » dans la cellule « F7 » dans l’onglet « Tableaux de Bord »

Copié la cellule « H2 » de l’onglet « Evaluation » dans la cellule « G7 » de l’onglet Tableau de Bord »

Copié la cellule « B6 » de l’onglet « Evaluation » dans la cellule « H7 » de l’onglet Tableau de Bord »

Copié la cellule « F6 » de l’onglet « Evaluation » dans la cellule « I7 » de l’onglet Tableau de Bord »

Crée un onglet « 2eme Evaluation » en copient l’onglet « Evaluation (3) » et renommer.

Copié la cellule « H7 » de l’onglet « Tableau de Bord » a la cellule « F2 » dans le nouvelle Onglet « 2eme Evaluation »

3e Etape :

Onglet « Tableau de Bord »

Bouton « 2eme Evaluation »

Il va mettre « ok » dans la cellule « D2 » dans l’onglet « 2eme Evaluation ».

Crée un nouveau Bouton sur cette onglet « Eval Fini » en affectent la macro « deuxièmeEvalFini »

4e Etape :

Onglet « 2eme Evaluation»

Bouton «Eval Fini»

Il va noter « oui » en cellule « F13 » dans l’onglet « Tableau de Bord »

Copié la cellule « D2 » de l’onglet « 2eme Evaluation » dans la cellule « G13 » de l’onglet Tableau de Bord »

Copié la cellule « B6 » de l’onglet « 2eme Evaluation » dans la cellule « H13 » de l’onglet Tableau de Bord »

Copié la cellule « F6 » de l’onglet « 2eme Evaluation » dans la cellule « I13 » de l’onglet Tableau de Bord »

Copié la cellule « H6 » de l’onglet « 2eme Evaluation » dans la cellule « J13 » de l’onglet Tableau de Bord »

Copié la cellule « I6 » de l’onglet « 2eme Evaluation » dans la cellule « K13 » de l’onglet Tableau de Bord »

Il va créer un nouvelle onglet « 3eme Evaluation » en copient l’onglet « Evaluation(3) » et renommer.

5e Etape :

Onglet « Tableau de Bord »

Bouton « 3eme Evaluation »

Il va noter « Ok » en Cellule « C2 » dans l’onglet « 3eme Evaluation »

Crée le bouton « Eval Fini » affecte la macro « TroisièmeEvalFini »

Dernier Etape :

Onglet « 3eme Evaluation »

Bouton « Eval Fini »

Il va Noter « oui » en Cellule « F20 » dans l’onglet « Tableau de Bord »

Copié la cellule « D2 » de l’onglet « 3eme Evaluation » dans la cellule « G20 » de l’onglet Tableau de Bord »

Copié la cellule « B6 » de l’onglet « 3eme Evaluation » dans la cellule « H20 » de l’onglet Tableau de Bord »

Copié la cellule « F6 » de l’onglet « 3eme Evaluation » dans la cellule « I13 » de l’onglet Tableau de Bord »

Copié la cellule « H6 » de l’onglet « 2eme Evaluation » dans la cellule « J20 » de l’onglet Tableau de Bord »

Copié la cellule « I6 » de l’onglet « 2eme Evaluation » dans la cellule « K20 » de l’onglet Tableau de Bord »

On a réussi avec ce système à faire plus d’une soixantaine d’évaluations depuis le début de l’année depuis le mois de mai nous ne l’avons pas utilisé.

Demain je dois en ressortir une vingtaine et quand j’ai voulu utiliser de nouveau le fichier et enregistrer sous, il me ferme le fichier.

Est-ce que quelqu’un saurait me dire pour quelle raison il veut plus fonctionner ?

Est-ce que vous pouvez jeter un œil au code pour optimiser les démarches et pour que le fichier reste stable ?

1000 mercis pour votre aide

Johnny

hello
chez moi ton fichier fonctionne, le seul « bug » que j’ai est au deuxième test a la création de l’onglet « 2 évaluation »
Capture d’écran 2022-08-22 125814

par contre le fichier « clignote » je suppose que c’est a cause de tout les « select » dans le code, il me semble avoir lu quelque part qu’il était « inutile »
voila le fichier lorsque j’enregistre sous, sans deuxième test consécutif.
Eval Vierge1.xlsm (64,3 Ko)

1 « J'aime »

Hello Taz,

Merci pour ton retour.
Le plus dramatique c’est que je n’avais même pas vu « Evalutation » Pour « Evaluation ».

Tu as quand même réussi à ce que les 2 autres onglets se créer et le fichier ce n’est pas fermé ?

Penses-tu qu’il faudrait que j’utilise Sheet.activate ?
Et j’essaye de recopier à la place de select ?

je ne sais pas ce qu’il faut mettre a la place,
mais je pense que ce seras tout le code a revoir, je pense que tu l’a crée avec l’enregistreur de macro

si tu regarde le fichier que j’ai mis, j’ai fais les trois « évaluation » et enregistré sous sans aucun probleme

1 « J'aime »

Exactement c’est un de mes tout premiers fichiers :blush:
Ça avait bien marché jusque-là mais maintenant qu’il se ferme comprend pas :frowning:

Chez moi il se ferme dès que je click sur 1er Evaluation.

Bonjour

Pour trouver l’instruction responsable d’une situation alors qu’il n’y a pas de bug fais comme ceci :

fichier ouvert clique sur les 2 touches alt+F11

Tu tombes sur l’éditeur de macro

à gauche de l’éditeur sélectionnes le module de la macro ici Module3
Dans l’éditeur vas dans le Sub de celle-ci et en regard de la première ligne de code cliques sur le bandeau gris (pour supprimer cet arrêt un même clique supprime le point marron)
un point marron apparait et la ligne se met sur fond de cette même couleur ainsi :

Retournes sur ton onglet avec ton bouton (croix noir en haut à droite de la fenêtre de l’éditeur)

A l’activation de ton bouton l 'exécution s’arrête sur la ligne de code sur fond marron

Puis fais évoluer ligne par ligne le traitement en cliquant sur la touche F8 ainsi :

la ligne en cours est sur fond jaune c’est celle qui sera exécutée à la prochaine activation de la touche F8

touche F8

touche F8

Ainsi de repérer la ligne sélectionnée en jaune qui a provoquée la fermeture du classeur

Fais ces manipulations est transmets la ligne trouvée

1 « J'aime »

je viens d’exécuter tes explications et je te remercie pour cette nouvelle leçon pour pouvoir trouver d’où vient l’erreur.

Le fichier se ferme juste après cette ligne

Par contre je ne suis pas parvenu à avoir comme toi la ligne en marron avec le petit point.

Et ensuite il me le réouvre de cette façon :frowning:

Le fichier se ferme juste après cette ligne

Par contre je ne suis pas parvenu à avoir comme toi la ligne en marron avec le petit point.

Il faut analyser pourquoi cette ligne de code provoque la fermeture du fichier à son exécution

Cette ligne sélectionne la feuille « Evaluation » pour mettre cet onglet actif à l écran
Si tu l actives manuellement que se passe t’il ?
L onglet est bien présent visuellement sans aucune anomalie ?

Pour avoir la ligne de code en marron il faut cliquer en regard d elle sur la partie grise verticale

Exactement au niveau du point marron

Essaies et dis moi

1 « J'aime »

Bonjour FFO,

j’ai contrôlé comme tu me l’as signalé c’est tout Excel qui se ferme après cette ligne.

Si j’ai d’autres fichiers ouverts avec le F8 quand il arrive là
image
il ferme tout

Du coup j’ai regardé dans les options pour voir si rien n’avait bougé.
Si j’active l’onglet manuellement il ne se passe rien, je n’ai pas détecté d’anomalie.
J’ai vérifié les affectations de la macro et mis l’options uniquement ce classeur.
mais il fermait encore Excel

Vu la Deadline assez courte pour rendre les évaluations, j’ai supprimé le fichier, pris un antécédent d’un collaborateur, enregistrer sous et réécrit éval Vierge, et quand je regarde avec alt F11 et F8 la ligne elle passe et y a plus de souci.

Mais je suis frustré de pas savoir pourquoi il a fait ça :frowning:.
J’essaierai de m’y repencher quand j’aurai un peu plus de temps

Je te remercie encore 1000 fois pour la leçon du jour :blush:
Intéressant de savoir comment on peut faire pour trouver une faille.

merci FFO je te souhaite une très belle journée
Johnny

Bonjour
Je pense que ton fichier pour une raison qu il sera difficile de cerner a été vérolé
Tu aurais pu essayer de supprimer et recréer la feuille « Evaluation » peut être dans celle-ci une ou plusieurs données à l origine de ce dysfonctionnement
As tu réussi à intégrer une ligne d’arrêt puis la supprimer (sur fond marron) ?
Grace à cet artifice d arrêter une procédure à un stade déterminé pour pas à pas la faire continuer et de verifier en même temps les effets produits ligne par ligne dans le fichier
Une bonne solution pour débusquer les anomalies

Des outils pour le vbėiste en herbe que tu es

1 « J'aime »

Bonjour,
Dans une macro, il faut éviter au maximum les . select
C’est vrai que par l’enregistreur il les placent d’office

remplace l’ensemble de tes macros par celles-ci (dans une copie de ton fichier pour garder ton original au cas où cela plante)

Sub commence()
' commence Macro
    Application.ScreenUpdating = False
    Range("F7").FormulaR1C1 = ""
    Sheets("Evalutation").Range("G2") = "ok"
    Sheets("Evalutation").Activate
End Sub

Sub premiereevalfini()
' premiereevalfini Macro
    Range("B6").Copy
    Sheets("Tableau de Bord").Range("H7").PasteSpecial Paste:=xlPasteValues
    Range("F6").Copy
    Sheets("Tableau de Bord").Range("I7").PasteSpecial Paste:=xlPasteValues
    Range("H2").Copy
    Sheets("Tableau de Bord").Range("G7").PasteSpecial Paste:=xlPasteValues
    Sheets("Tableau de Bord").Range("F7") = "oui"
    Sheets("Evalutation (3)").Copy Before:=Sheets(3)
    ActiveSheet.Name = "2eme Evalutation"
    Sheets("Tableau de Bord").Range("G7").Copy
    Sheets("2eme Evalutation").Range("A2").PasteSpecial Paste:=xlPasteValues
    Sheets("Tableau de Bord").Range("H7").Copy
    Sheets("2eme Evalutation").Range("F2").PasteSpecial Paste:=xlPasteValues
    Sheets("Tableau de Bord").Activate
    Application.CutCopyMode = False
End Sub

Sub deuxiemeevalfini()
' deuxiemeevalfini Macro
    Sheets("Evalutation (3)").Copy Before:=Sheets(4)
    ActiveSheet.Name = "3eme Evalutation"
    Sheets("2eme Evalutation").Range("D2").Copy
    Sheets("Tableau de Bord").Range("G13").PasteSpecial Paste:=xlPasteValues
    Sheets("2eme Evalutation").Range("B6").Copy
    Sheets("Tableau de Bord").Range("H13").PasteSpecial Paste:=xlPasteValues
    Sheets("2eme Evalutation").Range("F6").Copy
    Sheets("Tableau de Bord").Range("I13").PasteSpecial Paste:=xlPasteValues
    Sheets("2eme Evalutation").Range("H6").Copy
    Sheets("Tableau de Bord").Range("J13").PasteSpecial Paste:=xlPasteValues
    Sheets("2eme Evalutation").Range("I6").Copy
    Sheets("Tableau de Bord").Range("K13").PasteSpecial Paste:=xlPasteValues
End Sub
Sub deuxiemeeval()
' deuxiemeeval Macro
    Range("F13") = "oui"
    Range("H7").Copy
    Sheets("2eme Evalutation").Range("F2").PasteSpecial Paste:=xlPasteValues
    Sheets("2eme Evalutation").Range("C2") = "ok"
    Sheets("2eme Evalutation").Activate
    ActiveSheet.Buttons.Add(1106, 168, 204.5, 87).Select
    Selection.OnAction = "deuxiemeevalfini"
    Selection.Characters.Text = "Eval Fini"
    With Selection.Characters(Start:=1, Length:=9).Font
        .Name = "Calibri"
        .FontStyle = "Normal"
        .Size = 11
        .ColorIndex = 1
    End With
    Application.CutCopyMode = False
    Range("L7").Select
End Sub

Sub troisiemeevalfini()
' troisiemeevalfini Macro
    Range("D2").Copy
    Sheets("Tableau de Bord").Activate
    Range("G20").PasteSpecial Paste:=xlPasteValues
    Range("F20") = "oui"
    Sheets("3eme Evalutation").Range("B6").Copy
    Sheets("Tableau de Bord").Range("H20").PasteSpecial Paste:=xlPasteValues
    Sheets("3eme Evalutation").Range("H6").Copy
    Sheets("Tableau de Bord").Range("J20").PasteSpecial Paste:=xlPasteValues
    Sheets("3eme Evalutation").Range("I6").Copy
    Sheets("Tableau de Bord").Range("K20").PasteSpecial Paste:=xlPasteValues
    Sheets("3eme Evalutation").Activate
    Application.CutCopyMode = False
End Sub

Sub troisiemeeval()
' troisiemeeval Macro
    Range("G13").Copy
    Sheets("3eme Evalutation").Range("A2").PasteSpecial Paste:=xlPasteValues
    Sheets("3eme Evalutation").Range("C2") = "ok"
    Sheets("Tableau de Bord").Range("H13").Copy
    Sheets("3eme Evalutation").Range("F2").PasteSpecial Paste:=xlPasteValues
    Sheets("3eme Evalutation").Activate
    ActiveSheet.Buttons.Add(1130, 143, 219.5, 100.5).Select
    Application.CutCopyMode = False
    Selection.OnAction = "troisiemeevalfini"
    Selection.Characters.Text = "Eval Fini"
    With Selection.Characters(Start:=1, Length:=9).Font
        .Name = "Calibri"
        .FontStyle = "Normal"
        .Size = 11
        .ColorIndex = 1
    End With
    Application.CutCopyMode = False
    Range("L7").Select
End Sub

1 « J'aime »

Super merci Mimi,
si j’ai bien compris la lecture du codes il est inutile de sélectionner à chaque fois,
En lui disant la feuille Sheets(« Evalutation »), il va directement la sélectionner c’est pour ça que t’as pu enlever tous les points .sélect ? et mettre directement l’action attendu.?

Je vais essayer de me dégager du temps en fin de matinée pour mettre tes applications en place, et améliorer tout ça merci beaucoup Mimi a tout a l’heure
Johnny

J’ai essayé simplement avec enter. et j’ai supprimer l’espace de la ligne vide, le fichier se fermait dès que je rappuie sur F8.

J’ai pris très bonne note de ça et les vite noter dans mes cours :blush:

Merci de ton soutien

Re,
Pour mettre un ligne d’arrêt, clic simplement sur le bandeau vertical gris en face de la ligne
et reclic pour l’ôter
Tu peux d’ailleurs en placer plusieurs

1 « J'aime »

Hello Mimi
Je me permets de revenir vers toi pour te faire un retour

J’ai pris le temps de réécrire les codes comme tu me l’as donné ce qui m’a permis de pouvoir avoir un visuel en l’écrivant moi-même et je t’en remercie

Et tout fonctionne parfaitement y a plus de bug :blush:
Mais je n’arriverai pas à savoir qu’est-ce qui s’est passé, le principal c’est d’aller de l’avant :blush:,j’aurais sûrement une autre épreuve dans cet effet lol

Merci a toi et FFO .

je vous souhaite une excellente journée
Johnny

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.