Autres Application.Quit Erreur d'exécution 13

  • Initiateur de la discussion Initiateur de la discussion sg394
  • 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 !

sg394

XLDnaute Nouveau
Bonjour!

J'aurais encore besoin de vos lumières!

Dans mon code, j'ai cette commande:
If Not Range("P4").Value Like "Version 0.3" Then Application.Quit

Étrangement, plutôt que de quitter immédiatement, j'ai un message d'erreur:
Erreur d'exécution "13":
Incompatibilité de type

Je n'arrive pas à comprendre pourquoi. Ne riez pas de moi, je débute en VBA!
 
Solution
Bonjour sg394, le fil,

tes 2 fichiers en retour. 🙂

pour ton 1er fichier, code VBA de Module1 :

VB:
Sub maj()
  With Workbooks("Registre de production.xlsm").Worksheets("Feuil1")
    If .[P4] Like "*Version 0.3*" Then
      '================================
      'modifications
      .[M6:M10].Interior.Color = 49407
      '================================
      ActiveWorkbook.Save
    End If
  End With
  Application.Quit
End Sub

j'ai laissé Like "*Version 0.3*" ; mais si en P4 tu saisis toujours une donnée comme "Version 0.3" ou "Version 1.4" sans rien d'autre à gauche, ni à droite, alors...​
Bonsoir sg394, sylvanu,

"Version 0.3" est du texte ; je suppose que ta cellule P4 n'est pas du texte ; c'est peut-être une valeur d'erreur comme par exemple : #REF! ; vérifie aussi si cette cellule P4 est bien celle de la feuille active ; au besoin, ajoute une référence de feuille ; par exemple : Worksheets("Feuil5").Range("P4")

soan
 
Bonjour!

J'aurais encore besoin de vos lumières!

Dans mon code, j'ai cette commande:
If Not Range("P4").Value Like "Version 0.3" Then Application.Quit

Étrangement, plutôt que de quitter immédiatement, j'ai un message d'erreur:
Erreur d'exécution "13":
Incompatibilité de type

Je n'arrive pas à comprendre pourquoi. Ne riez pas de moi, je débute en VBA!
Bonsoir sg994,
Un essai en associant ces 2 lignes ensemble :
VB:
    Application.DisplayAlerts = False
    Application.Quit
@+
 
sylvanu
Même erreur avec If Not (Range("P4") Like "*Version 0.3*") Then Application.Quit

Précision, ce n'est pas du pas-à-pas. C'est la seule cellule à vérifier.

soan
Avec la cellule en format texte, même erreur. Et c'est bien la feuille active.


Masquer l'erreur avec "On Error Resume Next" fonctionne très bien! J'aurais quand même préféré COMPRENDRE l'erreur, parce que je veux apprendre! Mais ça fonctionne et c'est ce qui importe. Merci à vous tous!
 
Précision, ce n'est pas du pas-à-pas. C'est la seule cellule à vérifier.
Le pas à pas c'est l'exécution ligne par ligne du code, rien à voir avec l'instruction VBA.
La PJ fourni marche avec mon XL2007. P5 ne contient pas la chaine donc XL se ferme.
20210312_195211.gif
 
Dernière édition:
Bonsoir François,

même si ce que tu proposes marcherait, ça serait pour masquer l'erreur, pas pour la solutionner ! 😜 à ce compte-là, pourquoi pas utiliser par exemple On Error Resume Next ? ou On Error GoTo ? 😃​

soan
Salut soan,
Il ne t'arrive pas de passer l'aspirateur et de mettre sous le tapis ? 😂 je plaisante.
Perso j'ai une macro qui fonctionne avec cette association mais je n'ai pas d'erreur.
Je laisse la main aux experts...
Bonne soirée.
 
@Tchotchodu31

comme j'ai dit dans mon post #8, il faudrait le classeur de sg394 pour comprendre ; je précise : pour vérifier le contenu de la cellule P4 : donnée, type, éventuelle valeur d'erreur... (et si, quand j'étais gosse, ça m'arrivait de mettre la poussière sous le tapis ! 😂 🤣)

soan
 
D'accord! Mais les macros sont tellement simples que je crois que les transcrire ici sera aussi utile. Mais je dois vous expliquer un peu plus en détails.
Le premier fichier est un registre. Voilà ce qu'il contient:

Sub Aut😵pen()
If Dir("P:\play\prog\regmaj_on.ini") = "" Then Exit Sub
Application.Run "'P:\play\prog\MAJ.xlsm'!maj"
End Sub

Vous voyez que cette macro s'active automatiquement et ne s’exécute que si un fichier existe. Ce fichier sert d'interrupteur et est mis en place par un programme batch, lequel ouvre les différents registres un par un. Le but est de mettre à jour leur structure, par exemple en ajoutant ou en modifiant des colonnes. Cette macro, intégrée d'origine dans tous les registres, lance une macro créée ultérieurement et contenue dans un autre fichier.

Voici maintenant ce que contient la macro de mise à jour:

Sub maj()
On Error Resume Next

If Not (Range("P4") Like "*Version 0.3*") Then Application.Quit
'================================
'modifications
Range("M6:M10").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 49407
.TintAndShade = 0
.PatternTintAndShade = 0
End With
'================================
ActiveWorkbook.Save
Application.Quit
End Sub

Les modifications de la structure du fichier sont entre les lignes. Les modifications écrites ici n'ont aucun sens et servent seulement pour mes tests. Dans le futur, c'est entre ces lignes que je transcrirais une macro selon mes besoins.

La fonction qui était problématique sert à vérifier la version du fichier de registre afin que les modifications ne soient pas appliquées par erreur à un registre pour lequel elles ne sont pas conçues. Et ce numéro est justement écrit dans la cellule P4.

Finalement, le fichier est sauvegardé et l'application est fermée, ce qui permet au programme batch de continuer son exécution et d'ouvrir le prochain fichier excel.
 

Pièces jointes

Bonjour sg394, le fil,

tes 2 fichiers en retour. 🙂

pour ton 1er fichier, code VBA de Module1 :

VB:
Sub maj()
  With Workbooks("Registre de production.xlsm").Worksheets("Feuil1")
    If .[P4] Like "*Version 0.3*" Then
      '================================
      'modifications
      .[M6:M10].Interior.Color = 49407
      '================================
      ActiveWorkbook.Save
    End If
  End With
  Application.Quit
End Sub

j'ai laissé Like "*Version 0.3*" ; mais si en P4 tu saisis toujours une donnée comme "Version 0.3" ou "Version 1.4" sans rien d'autre à gauche, ni à droite, alors c'est mieux que tu mettes plus simplement :

* If .[P4] = "Version 0.3" Then (pour ton fichier "Registre de production.xlsm" Version 0.3)

* If .[P4] = "Version 1.4" Then (pour ton fichier "Registre de production.xlsm" Version 1.4)

si y'a aucun caractère à gauche, mais qu'il peut y en avoir à droite, par exemple en P4 : "Version 0.3542", alors tu peux mettre : If .[P4] Like "Version 0.3*" Then (pas d'étoile à gauche et une étoile à droite)

note bien que Application.Quit est exécuté dans tous les cas ; c'est inutile de mettre 2× cette instruction !​



pour ton 2ème fichier :

* j'ai démasqué les 5 colonnes A:E (vides)

* j'ai vérifié le format de la cellule P4 ; c'est : Texte ; j'ai laissé tel que, même si tu aurais pu laisser le format initial Standard : ça convient tout à fait pour "Version 0.3" ou "Version 1.4".

* je te laisse lire attentivement le nouveau commentaire de la cellule i18. 😜 en V19:W23 : suggestions pour tes prochains lieux de tournage. 😂

* j'aime bien ta sub Auto_ Open() dans Module1 ! 😁 😄 ça a un charme suranné indéniable, car ça fait bien longtemps maintenant qu'on ne l'utilise plus ! à la place, c'est la sub Workbook_Open(), qui doit être placée dans ThisWorkbook.
VB:
Private Sub Workbook_Open()
  If Dir("P:\play\prog\regmaj_on.ini") <> "" Then _
    Application.Run "'P:\play\prog\MAJ.xlsm'!maj"
End Sub

à toi de tester, puis à te lire pour avoir ton avis. 😉

soan
 

Pièces jointes

Dernière édition:
Bonjour sg394, le fil,
@sg394 : merci d'indiquer que Soan a résolu ton problème au post #14.
En ce qui me concerne, tu ne peux m'attribuer le statut "Résolu" au post #2 pour une solution qui gère simplement une erreur. Merci.
Il faut rendre à Soan ce qui appartient à César (ça t'irait bien César 🤔) 😁😁
 
- 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

Discussions similaires

  • Question Question
Microsoft 365 Erreur 13
Réponses
2
Affichages
419
Réponses
17
Affichages
2 K
Retour