• Initiateur de la discussion Initiateur de la discussion Dominique
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

D

Dominique

Guest
Bonjour,

Voilà mon problème.
J'ai fais une macro qui me demande via la fenêtre Excel "enregistrer sous" un nom de fichier pour enregistrer.
Si le nom de fichier n'existe pas, pas de problème.
Mais si le nom de fichier existe alors Excel me pose la question classique (enregister? Oui, Non, Annuler).
Comment fait-on pour gérer les réponses de ce type de message?

Une autre question du même type.
Excel m'informe que le contenu du presse papier est trop grand et qu'il va le vider.
Comment gérer l'action sur OK.

Pour des raisons de sécurité, je ne souhaite pas shunter les réponses par une gestion des erreurs, mais réellement répondre à la question ou simuler le clic sur OK.

Merci à tous pour votre aide et bonne soirée.
 
Bonjour Dominique, le Forum

Ta question est un peu ambigue. En fait pour le premier cas de figure, il suffit de faire le test si le Classeur existe si tu ne veux pas shunter les messages d'erreurs par une gestion d'erreur bête et méchante.

Maintenant c'est un peu tordu ton idée de répondre aux messages... On peut utiliser des "SendKeys" mais çà fait assez bricolage, et niveau sécurité c'est tout aussi peu fiable que de mettre DisplayAlerts à False sans même savoir ce qui se passe.

Non l'idéal et de faire un vrai gestionnaire d'erreur, voici un exemple :
Option Explicit
Sub SaveThisBook()
Dim TheFullPath As String

TheFullPath = "C:\Mes Documents\TotoTest2.xls" '<<< Ici ta variable du chemin/nom fichier

On Error GoTo ErrorHandler
Workbooks.Open TheFullPath
ActiveWorkbook.Close 0
Application.DisplayAlerts = False
ThisWorkbook.SaveAs TheFullPath
Application.DisplayAlerts = True

Exit Sub
ErrorHandler:
If Err = 1004 Then
ThisWorkbook.SaveAs TheFullPath
Else
MsgBox "Une Erreur Non Gérée s'est produite " & Err.num & " " & Err.Description
End If
End Sub

Pour l'alerte de ClipBoard, c'est différent, je dois partir là, mais si je me souviens bien j'avais vu différents moyens, dont le plus simple est de vider le presse papier, et je crois même aussi qu'on peut faire un turn off de cette alerte.. mais je ne sais plus où... lol (Je crois même qu'elle se turn off toute seule après un certains nombre de réponses négatives !)

Bon Appétit
@+Thierry
 
Bonsoir à tous

Pour vider une presse-papier trop volumineux, un moyen simple certe pas trés subtil mais efficace

Range("A1").Copy (en espérant qu'il n'y ai pas une lettre à grand-mère dans la cellule ......)


Roland
 
Merci pour vos conseils.

Roland, merci pour ton astuce, elle me plait bien. Je vais l'essayer demain.
Pour info.: il existe une fonction de désactivation du copier, mais ma bécane ralentit.

Thierry, je ne penses pas que je vais adopter ta solution, car je ne suis pas pour la gestion des erreurs, ça fait des programmes pas très propres. Mais tu m'as donné une idée. Si ca marche je l'expliquerai.

Bonne nuit.
 
Bonjour Dominque, Roland, le Forum

Je ne suis pas tout à fait d'accord Dominique. Il ne faut pas tout confondre, il y a des gestions d'erreur à éviter, surtout celles qui consistent à mettre du On Error Resume Next à tous bouts de champs, afin de "passer coûte que coûte", çà c'est certain que çà peut engendrer des résultats on ne peut plus "aléatoires".

Il y a aussi les codes qui renvoient à des labels avec on Error GoTo "Debut:"... "Centre:"... "Retour:"... Etc:...dans tous les sens et çà aussi, c'est à éviter.

Par contre une vraie gestion d'erreur n'est pas "sale" ! Et en prime, selon les cas, c'est bien plus rapide de générer (événetuellement) une erreur et de savoir la gérer que de boucler sur une grosse collection pour tester l'existence d'un objet. (Voir, entre autre, le site de Laurent Longre)

Mais pour conclure, le VBA étant un language complet, il permet à tout un chacun de programmer selon son niveau et ses compétences ainsi que selon son propre style.

Bonne Journée
@+Thierry
 
Bonsoir à tous,

Comme tu le stipules dans ton mail, il existe autant de façons de programmer que de programmeurs. Je vais donc faire un tour sur le site que tu me conseilles.
En gérant les erreurs j'ai peur de laisser passer de "vraies" erreurs. Ta solution permet-t-elle d'éviter ce problème?

Bonne soirée à tous,
Merci,
Dominique
 
Utiliser la gestion d'erreurs pour s'éviter des dizaines de lignes de codes, je le fais constamment, mais comme tu le soulignes Dominique, cela nécessite que tu saches précisément ce qui est susceptible d'arriver.
Par ailleurs, ce genre d'astuce s'utilise toujours dans des cas très précis (par exemple pour tester si un objet ou un tableau est initialisé, ce qui nécessiterait sinon un ensemble de tests quelquefois compliqués), aussitôt après, tu remets ta gestion d'erreurs "classique".
Le mieux est encore d'ailleurs d'utiliser une fonction spécifique qui réalisera ce test. Ainsi, ayant son propre gestionnaire d'erreur (désactivé donc pour la circonstance) elle n'interférera pas avec le gestionnaire d'erreur de ta procédure principale.
 
Bonsoir Ti, Dominique, Roland, le Forum

Et bien voilà, Ti a bien résumé ce que j'ai essayé de t'expliquer, et l'idée de passer par des functions est comme à l'habitude de Ti, bien entendu géniale !!!

Bon, et bien je vous laisse pour quelques jours dans le forum, car là je m'en va !!!

mais ce n'est qu'un au-revoir

à bientôt et soyez sages !!! et attention aux beaux ris !!!

@+Thierry
 
Bonjour tout le monde,

Pour ma part, je programme essentiellement à l'aide de l'enregistreur de macro. Ceci me permet de trouver les fonctions prinsipales à utiliser.

Si te veux coller les données d'une cellule dans une variable ne passe pas par le presse papier. Utilise ceci: Variable = Range("Cellule").Value.
J'étais passé par le presse papier car je désirais coller une feuille entière d'un classeur dans un autre et je n'avais rien trouvé de mieux (rapidité essentiellement).

Bonne soirée à tous,
Dominique
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
213
Réponses
4
Affichages
645
Retour