Erreur dans une macro VBA Excel

anasecu Messages postés 43 Date d'inscription   Statut Membre Dernière intervention   -  
anasecu Messages postés 43 Date d'inscription   Statut Membre Dernière intervention   -
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

  1. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
  2. mcherouana Messages postés 4 Statut Membre 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.
    0
  3. anasecu Messages postés 43 Date d'inscription   Statut Membre Dernière intervention  
     
    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
  4. mcherouana Messages postés 4 Statut Membre 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?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. anasecu Messages postés 43 Date d'inscription   Statut Membre Dernière intervention  
     
    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