Erreur d execution 13

Bonjour,

J’ai créé un programme automatisé (pour personne non-voyante) avec excel pour taper les devis qui fonctionnait trés bien et depuis hier j’ai un message d’erreur : ERREUR D EXECUTION 13 - INCOMPATIBILITE DE TYPE
Systémé d’exploitation Window XP Pack2
Voici mon code :
Sub nomduclient()
Dim nomclient
nomclient = InputBox(“Quel est le nom du client ? (en MAJ svp, NOM PRENOM,avec 1 espace entre les 2)”, “NOM DU CLIENT”)
Workbooks.Open Filename:=“C:\Documents and Settings\OWNER\Mes documents\agenda.xls”
Sheets(“clients”).Select
flag = WorksheetFunction.CountIf(Range(“A:A”), nomclient)
If flag = 0 Then
MsgBox (“ATTENTION ! Le client " & nomclient & " n’existe pas dans l agenda clients ! Peut-être avez-vous fait une erreur de saisie, sinon, vous devez d abord créer ce client avant de faire un devis.”)
GoTo SORTIE
Else
Windows(“Classeureuros.xls”).Activate
Sheets(“devis”).Select
Range(“D11”).Select
ActiveCell.Value = UCase(nomclient)
Windows(“Classeureuros.xls”).Activate
Sheets(“devis”).Select
Range(“B23”).Select
ActiveCell.Value = numfact
Windows(“agenda.xls”).Activate
ActiveWorkbook.Save
ActiveWindow.Close
Workbooks.Open Filename:="C:\Documents and Settings\owner\Mes Documents\numerofact.xls "
Val1 = Sheets(“numero”).[A1].Value
Resultat = Val1 + 1
Windows(“Classeureuros.xls”).Activate
Sheets(“DEVIS”).Select
Sheets(“DEVIS”).[B23].Value = (Resultat)
Windows(“numerofact.xls”).Activate
ActiveWorkbook.Save
ActiveWindow.Close
Range(“A25”).Select

End If
SORTIE:
End Sub

C’est quand il va ouvrir le classeur numerofact.xls que cela bloque et quand je fais débogage tou se ferme…
j’ai le même lprogramme sur un autre ordinateur et cela fonctionne correctement.
Merci pour votre aide ou vos suggestions
Lindette

Il y a de grandes chances pour que tu aies entré une valeur erronée (genre espace ou caractère de contrôle) dans une cellule sur laquelle tu tentes ensuite une opération mathématique.
Il faut voir sur quelle ligne ça bloque exactement.
Pour cela, tu mets un poinr d’arrêt (F9) sur la première ligne qui suit le Else, et ensuite tu avances ligne par ligne (F8) en examinant le changement de valeur des variables (il suffit de les survoler avec la souris).
Et tu notes bien la ligne qui te sort l’erreur.

Quand tu dis que ca fonctionne sur un autre micro, tu as fait la copie de tous les classeurs APRES que se soit produite l’erreur sur ton autre micro et ça fonctionne ?

Il y a quelques améliorations qui pourraient éventuellement t’aider :

  • en tête de module (avant le sub) tu mets Explicit on
    Cela va t’obliger à déclarer tes variables en précisant leur type
  • tu supprimes le goto :
    If flag = 0 Then
    MsgBox (“ATTENTION ! Le client " & nomclient & " n’existe pas dans l agenda clients ! Peut-être avez-vous fait une erreur de saisie, sinon, vous devez d abord créer ce client avant de faire un devis.”)
    GoTo SORTIE
    Else
    –>
    If flag = 0 Then
    MsgBox (“ATTENTION ! Le client " & nomclient & " n’existe pas dans l agenda clients ! Peut-être avez-vous fait une erreur de saisie, sinon, vous devez d abord créer ce client avant de faire un devis.”)
    Exit sub
    Endif

Je n’ai pas tout compris dans tes aller-retour entre classeurs.
Windows(“Classeureuros.xls”).Activate
Sheets(“devis”).Select
Range(“D11”).Select
ActiveCell.Value = UCase(nomclient)
Windows(“Classeureuros.xls”).Activate
Sheets(“devis”).Select
etc.

Windows(“agenda.xls”).Activate
ActiveWorkbook.Save
ActiveWindow.Close
–>
tu peux fermer un classeur sans l’activer :
Workbooks(“nomclasseur.xls”).Close true

Bonjour

Merci pour ta réponse
J’ai suivi ton conseil avec F8 et j’ai trouvé pourquoi cela bloquait, j’avais rentré un code dans le classeur agenda qui n’était pas bon…
J’avais complétement oublié que je l’avais rajouté!!! merci beaucoup pour ton aide.
pour info : j’ouvre le classeur devis et je tape le nom du client si celui-ci existe cela ouvre le classeur numerofact pour incrélmenter un nouveau numéro de facture par contre si le client n’existe pas dans agenda cela ferme le classeur devis, ouvre celui agenda et il faut le créer. cela parait pas trés simple mais je n’ai pas trouvé mieux!!!
j ai un autre probléme c’est celui de la date car j’ai écrit la formule =aujourdhui() dans la cellule correspondante mais quand j’ai fini de taper le devis celui-ci s’enregistre automatiquement dans dossier client sous le nom du client et le numéro de devis , mais dés que je l’ouvre pour se modifier évidemment la date change, connais-tu un moyen pour qu’il conserve sa date de création?
Merci d’avance
Lindette

Avec aujourd’hui(), tu n’y arriveras pas.
Par contre, tu peux faire écrire la date en dur dans la cellule par le code VBA qui t’ouvre ta feuille pour la première fois.
Avec éventuellement un test pour n’écrire que si la cellule est vide