IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Recopie nom onglet Erreur 1004


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 80
    Par défaut Recopie nom onglet Erreur 1004
    Bonjour,
    Je souhaite que lors d'une saisie, le nom de l'onglet change (ce qui est le cas) puis que le nom soit inscrit sur la feuille "MENU" (j'ai placé un "msgbox" pour vérifier si la macro est bien retenue (ce qui est le cas).
    L'erreur ( exécution 1004) se situe sur la ligne Range("H3") = NOMONGLET.
    J'ai placé le code dans la page où nom de l'onglet doit changer automatiquement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Private Sub Worksheet_Change(ByVal Target As Range)
     
     
        If Target.Address = "$B$1" Then
        ActiveSheet.Name = ActiveSheet.Range("B1")
     
    Dim NOMONGLET As String
    NOMONGLET = Range("B1")
    MsgBox NOMONGLET
    Sheets("MENU").Select
    Range("H3") = NOMONGLET
     
        End If
     
    End Sub
    Auriez vous une idée d'où vient l'erreur?

    Merci à vous
    Pascal

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    L'erreur 1004 à l'instruction Range("H3") = NOMONGLET provient sans doute du fait que la cellule H3 présente dans la feuille où se trouve la procédure événementielle est verrouillée et la feuille protégée.

    Si vous souhaitez écrire le nouveau nom de cette feuille, dans une cellule de la feuille nommée Menu, ce n'est évidemment pas la bonne syntaxe car Range("H3") est la cellule de la feuille où se trouve la procédure événementielle et pas celle de la feuille MENU et ce même si vous activez la feuille MENU

    Il faut toujours préciser le parent d'une cellule et les méthodes Select et Activate sont à proscrire

    Code modifié mais pas parfait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Worksheet_Change(ByVal Target As Range)
      If Target.Address = "$B$1" Then
         ActiveSheet.Name = ActiveSheet.Range("B1")
         Dim NOMONGLET As String
         NOMONGLET = Range("B1")
         ' MsgBox NOMONGLET
         ' Sheets("MENU").Select
         Worksheets("Menu").Range("D1") = NOMONGLET
      End If
    End Sub
    Voici un code plus propre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Worksheet_Change(ByVal Target As Range)
      With Target
        If .Address = "$B$1" Then
           Me.Name = .Value
           Worksheets("Menu").Range("H3") = .Value
        End If
     End With
    End Sub
    Je remplacerais également Worksheets("Menu") par son CodeName

    A lire éventuellement mes billets sur le sujet
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 80
    Par défaut
    Bonjour,
    Merci beaucoup, mais j'ai du mal avec "les objets", "methode", "select", "active", ... J'arrive à faire des programmes relativement élaborés (dans sa fonction) mais qui à la lecture devraient faire hérisser les cheveux de beaucoup d'entre vous.
    Je crois avoir compris l'usage des variables et des boucles For, If Case par contre parfois perdu dans l'appel des données. (souvent j'utilise l'enregistrement pour m'en sortir surtout pour les tris et filtres ce qui, à la lecture du code fait un peu "tache", en alourdissant le déroulement du programme (on le voit bien avec l'exemple précédent et cela "m'impressionne" de voir avec quelle facilité et simplicité vous le faite).
    Encore merci pour l'aide et pour les liens de référence sur lesquels je vais m'appuyer.

    Bonne journée sous le soleil de Bretagne

    Pascal

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Supprimer tous les noms d'un classeur erreur 1004
    Par MBHuningue dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/12/2019, 23h08
  2. Erreur 1004 : Remplir des cellules avec des noms de contrôle.
    Par c.piette dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/04/2015, 09h15
  3. [XL-2007] Macro sur plusieurs onglets: erreur 1004
    Par beniboy dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 26/12/2012, 14h40
  4. [XL-2007] Passe une variable à mon nom de feuille erreur 1004
    Par cchasse98 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 29/11/2012, 15h17
  5. [XL-2003] VBA-Pb d'erreur 1004 après avoir défini un nom pour une plage
    Par oracle7556 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/07/2010, 12h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo