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 -
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.
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:
- Erreur dans une macro VBA Excel
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Déplacer une colonne excel - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
5 réponses
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+
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+
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.
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.
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.
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.
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?
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?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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.
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.