Erreur dans une macro VBA Excel

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.
Configuration: Windows XP
Firefox 3.0.4

5 réponses

  • Votes
  • Date
  • Date décroissante
  1. 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+
    1. 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.
      1. 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.
        1. 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?
          1. 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.