Message d'erreur VBA que je ne comprend pas

Fermé
Lysere - 25 oct. 2013 à 15:16
 Lysere - 25 oct. 2013 à 15:33
Bonjour,

Voilà, je met en place un petit programme automatisé excel, mais je suis face à un problème que je n'arrive pas à résoudre moi-même malgré un certain nombre de recherches.
L'objectif de ce classeur est que mes agents saisissent un certain nombre de formulaires, une fois cela fait, ils doivent archiver les documents par le biais d'une macro d'archivage puis imprimer le rapport synthétique qui s'est crée.
J'ai donc rajouté une petite macro VBA supplémentaire permettant de contrôler que l'archivage a bien été effectué.
Or, lorsque je tente de tester ma macro j'obtiens le message d'erreur suivant :

Un appel de fonction dans la partie gauche de l'affectation doit renvoyer Variant ou Object

Il s'agit d'un message d'erreur que je ne comprend pas, ne pratiquant pas le VBA depuis très longtemps.
Lors de l'interruption de la macro et du lancement du mode débogage, il me surligne en jaune la partie suivante

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Je n'arrive pas à voir ou j'ai fais une erreur
Voici la macro que j'ai crée à cette fin, en espérant trouver une solution.

Private Sub Workbook_BeforeClose(Cancel As Boolean)

'Avant impression, contrôle de l'archivage effectué
'aller sur la feuille archivage
Sheets("ARCHIVAGE").Select
'selection de la cellule A1
Range("A1").Select
'procéder à un CTRL+flèche vers le bas pour atteindre la dernière cellule complétée.
Selection.End(xlDown).Select
'copier la dernière cellule complétée
Selection.Copy
'retourner sur la feuille calculateur
Sheets("CALCULATEUR").Select
'selectionner la cellule A41
Range("A41").Select
'coller
ActiveSheet.Paste
'incrémenter la cellule A41
Range("A41") = Range("A41") + 1
'comparaison de la cellule A41 à la cellule A44
If Range("A41") <> Range("A44") Then
'les valeurs des deux cellules sont différentes
'message d'alerte avec choix de l'utilisateur, fermer le fichier quand même ou archiver
MsgBox("ALERTE ! La saisie en cours n'a pas été archivée, voulez-vous procéder à l'archivage maintenant ?" _
, vbYesNo) = vbYes
'l'utilisateur a cliqué sur 'OUI' et souhaite procéder à l'archivage
Application.Run ("archivageV2")

End
End If
End Sub

J'ai beau retourner le problème... quelque chose m'échappe. Peut-être parce que je bosse sur ce fichier depuis trop longtemps.
Quelqu'un a-t-il une idée ?

A voir également:

1 réponse

Voilà, j'ai fais une pause, tapé sur deux trois collègues (seulement imaginairement) respiré un peu d'air frais, et la solution m'a sauté au visage comme un je sais pas quoi sur son je sais pas qui

Corrigé avec les éléments suivants, ça va mieux

Private Sub Workbook_BeforeClose(Cancel As Boolean)

'Avant impression, contrôle de l'archivage effectué
'aller sur la feuille archivage
Sheets("ARCHIVAGE").Select
'selection de la cellule A1
Range("A1").Select
'procéder à un CTRL+flèche vers le bas pour atteindre la dernière cellule complétée.
Selection.End(xlDown).Select
'copier la dernière cellule complétée
Selection.Copy
'retourner sur la feuille calculateur
Sheets("CALCULATEUR").Select
'selectionner la cellule A41
Range("A41").Select
'coller
ActiveSheet.Paste
'incrémenter la cellule A41
Range("A41") = Range("A41") + 1
'comparaison de la cellule A41 à la cellule A44
If Range("A41") <> Range("A44") Then
'les valeurs des deux cellules sont différentes
'message d'alerte avec choix de l'utilisateur, fermer le fichier quand même ou archiver
If MsgBox("ALERTE ! La saisie en cours n'a pas été archivée, voulez-vous procéder à l'archivage maintenant ?" _
, vbYesNo) = vbYes Then
'l'utilisateur a cliqué sur 'OUI' et souhaite procéder à l'archivage
Application.Run ("archivageV2")

End
End If
End If

End Sub

Le problème était que j'avais une Msgbox avec un choix pour l'utilisateur, mais pas de fonction If permettant de déterminer l'utilité et la destination du choix (terme imprécis, mais je suis fatigué, j'espère être compréhensible)
0