Erreur dans une macro VBA Excel

Fermé
anasecu Messages postés 43 Date d'inscription mercredi 26 novembre 2008 Statut Membre Dernière intervention 19 novembre 2017 - 26 nov. 2008 à 18:29
anasecu Messages postés 43 Date d'inscription mercredi 26 novembre 2008 Statut Membre Dernière intervention 19 novembre 2017 - 26 nov. 2008 à 21:44
Bonjour à tous,

J'utilise depuis pas mal de temps le VBA sous excel.

J'ai un classeur qui fonctionnait correctement et sur lequel j'ai rajouté des fonctionnalités et depuis, à ma grande surprise certaines parties de l'ancien code ne fonctionnent plus. Par exemple, cette procédure appelée dans un module lors d'un Workbook_SheetChange :

If Range("ferie").Value <> annee Then
Sheets("param").Activate
w_feu = ActiveSheet.Name
Range("ferie").Value = annee
Sheets("DB").Activate
End If

Dans ce cas, Sheets("param") ne s'active plus, w_feu contient toujours "DB" la feuille précédente et lorsque l'on arrive sur la ligne :
Range("ferie").Value = annee

la macro s'arrête brutalement.

La récupération de l'erreur permet de voir que c'est 1004 mais je n'arrive pas à voir ce qui a pu provoquer cela car avant ce code fonctionnait correctement.

Si quelqu'un a une petite idée je l'en remercie d'avance.
A voir également:

5 réponses

Mike-31 Messages postés 18379 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 mars 2025 5 125
26 nov. 2008 à 18:40
Salut

essayes comme cela ça doit être mieux

If Range("ferie").Value <> "annee" Then
Sheets("param").Activate
w_feu = ActiveSheet.Name
Range("ferie").Value = "annee"
Sheets("DB").Activate
End If

A+
0
mcherouana Messages postés 4 Date d'inscription mercredi 26 novembre 2008 Statut Membre Dernière intervention 26 novembre 2008 1
26 nov. 2008 à 18:41
bonsoir

Il faudrait en dire un peu plus sur les variables, les noms de feuilles et ce que tu teste dans le "if". c'est difficile de se prononcer sur un morceau de code sorti de son contexte.
0
anasecu Messages postés 43 Date d'inscription mercredi 26 novembre 2008 Statut Membre Dernière intervention 19 novembre 2017
26 nov. 2008 à 19:15
Bonjour,


Je comprend bien que cela ne soit pas facile sans l'ensemble du classeur mais en fait le code que je vous ai mis est une toute petite procédure qui va mettre à jour la table des jours fériés qui est triée lors de la désactivation de la feuille "param" :

Public Sub maj_ferie(ByVal annee, ByVal onglet) ' changement date
On Error GoTo retour
If Range("ferie").Value <> annee Then
Sheets("param").Activate
Range("ferie").Value = annee
Sheets(onglet).Activate
End If
retour:
If Err.Number <> 0 Then MsgBox "Erreur : " & Err.Number
End Sub

Certaines autres procédures ne fonctionnent plus non plus, par contre l'accès à d'autres feuilles en écriture ne pose aucun souci.
0
mcherouana Messages postés 4 Date d'inscription mercredi 26 novembre 2008 Statut Membre Dernière intervention 26 novembre 2008 1
26 nov. 2008 à 19:43
bonsoir

Alors, si je comprends bien, tu as une zone ou une cellule de la feuille qui se nomme "férie". tu compares la valeur qui y est contenu avec la variable année. Si ces 2 valeurs sont différentes, alors tu actives une feuille nommée param, tu affectes la valeur contenue dans année à la cellule "ferie" et tu active un autre onglet.
- est ce que tous les éléments traites (feuilles, variables et onglets) existent bien?
- la passage des paramétrés à la fonction est il correct?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
anasecu Messages postés 43 Date d'inscription mercredi 26 novembre 2008 Statut Membre Dernière intervention 19 novembre 2017
26 nov. 2008 à 21:44
Bonsoir,

Tu as tout compris tous les paramètres sont bons (vérifiés au pas à pas) la valeur de la cellule "ferie" est bien celle du classeur et lorsque l'on veux la modifier => erreur 1004 ?

Ceci fonctionnait tout à fait correctement il y a un mois : je ne vois pas pourquoi il ne veut pas changer la valeur alors qu'il n'y a aucune protection sur la feuille.
0