Rechercher : dans
Par :

Erreur dans une macro VBA Excel

Dernière réponse le 26 nov 2008 à 21:44:00 anasecu, le 26 nov 2008 à 18:29:18 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « Erreur dans une macro VBA Excel » dans :
Télécharger MOREFUNC (Macro complémentaire EXCEL) VoirMorefunc est une macro complémentaire proposant 67 nouvelles fonctions de feuille de calcul pour Excel. Ces fonctions sont compatibles avec Excel 95 à 2007. Elles ne sont pas portables sur d'autres plate-formes que Windows, ni sur d'autres...

1

Mike-31, le 26 nov 2008 à 18:40:59

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+

Répondre à Mike-31

2

mcherouana, le 26 nov 2008 à 18:41:58

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.

Répondre à mcherouana

3

anasecu, le 26 nov 2008 à 19:15:13

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.

Répondre à anasecu

4

mcherouana, le 26 nov 2008 à 19:43:31

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?

Répondre à mcherouana

5

 anasecu, le 26 nov 2008 à 21:44:00

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.

Répondre à anasecu