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 :

Problème lors de la création d’une plage de cellules en VBA [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 8
    Par défaut Problème lors de la création d’une plage de cellules en VBA
    Mon problème est le suivant :

    J’ai besoin de créer des plages de cellule avec différents éléments variables.

    Pour cela j’utilise la ligne de code suivant (celle-ci se trouve dans une boucle)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.Names.Add Name:=base_nom_plage & "_XXX", RefersTo:="=" & Range(Cells(Ligne_haut, 1), Cells(Derniere_ligne, 1)).Address
    Le problème est que lors de la deuxième itération j’ai le message suivant : « Erreur d'exécution '1004': La méthode 'Cells' de l'objet '_Global' a échoué »

    Du coup, j’ai modifié ma ligne de code de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.Names.Add Name:=base_nom_plage & "_XXX", RefersTo:="=" & Worksheets(Nom_nouvelle_feuille).Range(Worksheets(Nom_nouvelle_feuille).Cells(Ligne_haut, 1), Worksheets(Nom_nouvelle_feuille).Cells(Derniere_ligne, 1)).Address
    Suite à cette modification, toujours lors de la deuxième iteration, j’ai le message suivant : « Erreur d'exécution '1004': La formule que vous avez tapée contient une erreur »

    Je n’arrive pas à résoudre le problème et je ne comprends pas pourquoi cela fonctionne qu’une fois seulement ?

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Citation Envoyé par c_tampon Voir le message
    Pour cela j’utilise la ligne de code suivant (celle-ci se trouve dans une boucle)
    ...
    Je n’arrive pas à résoudre le problème et je ne comprends pas pourquoi cela fonctionne qu’une fois seulement ?
    Le problème est selon toute évidence dans l'écriture de la boucle. Précisément celle dont on ne voit pas le code

  3. #3
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut
    Bonjour,
    Essaye avec un With

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    with worksheets(Nom_nouvelle_feuille)
    ActiveWorkbook.Names.Add Name:=base_nom_plage & "_XXX", RefersTo:="=" & .Range(.Cells(Ligne_haut, 1), .Cells(Derniere_ligne, 1)).Address
    end with

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Commence par regarder dans la fenêtre des variables locales, le contenu de chacune des variables présentes dans cette ligne de code.
    Comme je le dis souvent, le diable se cache dans la variable.

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 8
    Par défaut
    Bonjour,
    merci pour vos conseils. Pour le moment je n'ai pas trouver la solution :roll:.
    J'ai essayer la solution de halaster08, mais le probleme reste le même. je n'ai pas trouvé la solution au travers de la fenêtre variable. le contenu de celle-ci me semble logique.

    Je vous joint une partie de mon code dans un fichier excel permettant de le faire tourner. Je ne suis pas un pro et surement il pourrait être optimisé :lol:

    Par la même occasion, si vous savez comment faire pour que les noms de plages dans les graphiques que je créée puisse bien apparaitre sous la forme d'un nom de plage (exemple: Suivi_graphique!D_01_Even_LIM_50) et non d'une sélection fixe (exemple : Suivi_graphique!$H$1603:$H$1629). je suis preneur :lol:.

    Merci d'avance pour votre aide.
    Essai Macro.xlsm

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 8
    Par défaut
    je continue mes recherches pour résoudre mon probleme.
    Je fais des tests en mettant des variables (voir ci-dessous) pour essayer de contourner le probleme.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      With Worksheets(Nom_nouvelle_feuille)
                    nom_plage = base_nom_plage & "_Lot"
                    nom_plage_range = Worksheets(Nom_nouvelle_feuille).Range(Worksheets(Nom_nouvelle_feuille).Cells(Ligne_haut, 1), Worksheets(Nom_nouvelle_feuille).Cells(Derniere_ligne, 1)).Address 
                    ActiveWorkbook.Names.Add Name:=nom_plage, RefersTo:=nom_plage_range
      End With
    le résultat n'est pas satisfaisant car il génère bien tout les nom de plages (la boucle s’exécute plusieurs fois) mais les plages ne peuvent plus être utilisées pour générer les graphiques. En fait, les valeurs de la plage de donnée sont remplacées par les références de la plages de donnée.

    Du coup, je soupçonne plus un probleme de déclaration de variable ou de remise à 0 de certaine, dans mon premier code, qui l’empêchait d'effectuer la boucle plusieurs fois.
    J'ai essayer de vider certaine variable avec "EMPTY" mais sans succès

    Est ce que vous avez des pistes qui pourraient m'aider ?

  7. #7
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Ne connaissant rien du reste de ton code (en particulier comment tes variables sont déclarées et renseignées), je ne vois pas comment il serait possible de comprendre ton problème.
    Nom : smileys-boule-cristal-tns0.gif
Affichages : 118
Taille : 49,8 Ko

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

Discussions similaires

  1. [XL-2010] Problème lors de la création de tableau croisé dynamique avec vba
    Par juju05 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/07/2012, 17h10
  2. Réponses: 11
    Dernier message: 05/08/2009, 12h30
  3. Réponses: 2
    Dernier message: 21/11/2005, 09h29
  4. Clé étrangère problème lors de la création de la table.
    Par snoopy69 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 18/08/2005, 08h15
  5. Réponses: 1
    Dernier message: 26/05/2005, 12h24

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