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 de tableau avec un indice hors de la sélection


Sujet :

Macros et VBA Excel

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 62
    Par défaut Problème de tableau avec un indice hors de la sélection
    Bonjour a tous ,
    je suis débutant en vba et m'exerce dans mon temps libre à améliorer divers fichier de mon boulot
    je viens à vous aujourd'hui car j'ai un problème avec un tableau me renvoyant une erreur.
    Le problème c'est que je suis sûr que cela avait déjà fonctionné auparavant et après quelque modification pour améliorer (enfin normalement ^^ ) le code j'ai une erreur d'indice hors de la sélection.
    je vais mettre mon classeur en pièce jointe afin que vous puissiez visualiser plus facilement.
    le code ne fonctionnant plus se trouve dans la page "tridyn" dans la partie "worksheet_activate" (je l'ai mis ici en attendant pour pouvoir faire mes test plus facilement)
    La plupart de mes variables sont déclarées dans "Module1"; enfin la dernière partie du code se trouve dans "Workbook" .

    le but du code ne fonctionnant pas et de faire des tableau dynamique par grade en modifiant leur contenue automatiquement a chaque changement de grade et ainsi par la suite en faire des listes dynamique .

    j'espere avoir été assez clair sinon je suis a votre dispositions pour toutes questions évidemment ^^

    merci d'avance a tous
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Le problème c'est que je suis sûr que cela avait déjà fonctionné auparavant et après quelque modification pour améliorer . Rappelez-vous ce que vous avez fait comme modifications.

    Par hasard, ne serait-ce pas le jour ou vous avez déclaré les variables dans un autre module, notamment les variables tableaux?

    Dans le module de la feuille "tridyn", n'y avait-il pas quelque chose dans ce genre juste avant la ligne "For i = 1 To nbpax"?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    DerLig = [A10000].End(xlUp).row
    ReDim tabCOL(DerLig) As String
    ReDim tabLCL(DerLig) As String
    ReDim tabCDT(DerLig) As String
    ReDim tabCNE(DerLig) As String
    Cdlt

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 62
    Par défaut
    non justement j'avais tout laissé dans le module pour faire "plus propre" et justement je ne veux pas faire un tableau avec un colonne entière mais juste avec ce qu'il contient sinon lorsque je déclarerai il y aura plein de vide à la sélection ( c'est ce que j'ai remarqué).
    Enfin si je déclare également ces tableaux dans "tridyn" cela ne vas t'il pas me faire perdre la taille que je leur donne au moment de l'ouverture ( et même cela sera-t-il considéré comme le même tableau? )?

    merci !

  4. #4
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    je ne veux pas faire un tableau avec un colonne entière mais juste avec ce qu'il contient Où avez vu l'utilisation de la colonne entière?
    DerLig = [A10000].End(xlUp).row permet justement de ne prendre que le nombre de ligne nécessaire
    Avant de creuser davantage, dans la boucle For i=1 to nbPAX, Quelle est la valeur de nbpax?
    ligne suivante: If Cells(rind, 1) = "col" And indcol <= nbtabcol Then, Quelle est la valeur de nbtabcol?
    Avant d'aller plus loin, il serait souhaitable d'exprimer clairement ce que doit faire le programme lorsqu'on sélectionne la feuille "tridyn", où du moins ce que vous désirez obtenir plutôt que de nous servir un code qu'il faut essayer de déchiffrer.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 62
    Par défaut
    Nbpax représente le nombre total de personne
    Nbcol le nombre de personne avec pour grade col ( indem pour les autres pour leur grade respectif)
    La feuille tridyn regroupe l ensemble des personnels d une entité avec leurs infos respectives
    Le but des tableau (tabcol, tablcl,...) est de créer des listes dynamique avec l ensembles des membres de chaque grade afin que lorsque qu un personnel change de grade son nom soit automatiquement changé de tableau
    Est ce assez clair ou il manque encore qqchose qui pourrait améliorer la compréhension ?

  6. #6
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Peut-être que je me suis mal exprimé, dans la macro Private Sub Worksheet_Activate(), il y a la ligne For i = 1 To nbpax. Je reformule autrement ma question: Où trouve t-on la valeur de nbpax ?
    Idem pour la ligne suivante: If Cells(rind, 1) = "col" And indcol <= nbtabcol Then Où trouve t-on la valeur de nbabcol ?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 62
    Par défaut
    bonjour,
    nbpax comme nbtabcol et la plupart de mes variables sont déclarées dans le "Module 1" j'avais vu qu'il fallait faire cela afin de pouvoir récupérer ces variables dans l'ensemble du classeur ( même si j'ai encore du mal a comprendre la différence entre Global et Public )
    ensuite ces variables sont utilisées la premières fois a l'ouverture du classeur donc dans Workbook_open

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 62
    Par défaut
    J'ai fais pas mal de test et ce que j'en déduis c'est que le classeur ne sait pas ce qu'est la tableau tabCOL (ni aucun autre du même type du coup) donc j'aurai voulu savoir comment je pourrais le déclarer globalement ( pour l'ensemble du classeur) afin que lorsque je lui donne une dimension, au moment de l'ouverture du classeur , il la garde (comme base ) sur les autres événements dans ma feuille "tridyn" et que je puisse ainsi les redimensionner a ma guise lors de changements de grade .

    merci d'avance (j’espère avoir été clair car apparemment ce n'est pas trop le cas en ce moment ).

  9. #9
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Déclarer une variable c'est indiquer le type de variable à traiter "boolean, string, etc..", mais cela ne fournit aucune valeur.
    Dans la boucle For i = 1 To nbpax il faut bien indiquer la valeur de nbpax avant de lancer la boucle, exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     nbpax=10
     For i=1 to nbpax
    pour boucler 10 fois, mais dans votre cas il n'y a pas de valeur attribuer à nbpax, idem pour tous les cas similaires.

    Pour déclarer les variables utilisables dans tout le classeur, il faut les déclarer en public
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ublic nouveaugrade As String, trigrade As String
    Public nbtabcol As Integer, nbtablcl As Integer, nbtabcdt As Integer, nbtabcne As Integer, nbpax As Integer
    Public listegrade As Variant
    Public rind As Integer, i As Integer, j As Integer
    Cdlt

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 62
    Par défaut
    merci de tes réponse arturo mais ma valeur nbpax est défini à l'ouverture de mon classeur et celle ci arrive a bien à être retransmise sur ma feuille "tridyn" (d'où les nombreux test qui apparaisse sur la feuille)
    j'ai beau être un débutant en excel , donner une valeur a une variable lorsque l'on s'en sert cela devrait aller merci
    de plus si l'erreur venait de là la ligne surlignée serait sur la boucle For avec "nbpax" lors de l'erreur et non à l'intérieur de la boucle.

  11. #11
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Ok, j'avais pas vu que la variable était dans ThisWorkbook.
    Mais qu'est-ce qui ne vous convient pas dans la déclaration des tableaux que je vous avais présenté plus haut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        DerLig = [A10000].End(xlUp).row
        ReDim tabCOL(DerLig) As String
        ReDim tabLCL(DerLig) As String
        ReDim tabCDT(DerLig) As String
        ReDim tabCNE(DerLig) As String
    Les tableaux s'adaptent bien en fonction du nombre de lignes, à moins que vous vouliez une valeur fixe à l'ouverture du classeur, dans ce cas relevez la dernière ligne du tableau à ce moment là.

  12. #12
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour à tous,

    Perso je n'ai pas eu d'erreur en activant 'tridyn'.

    Une remarque cependant : il faut typer toutes les variables individuellement.
    Dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Global nouveaugrade, trigrade As String
    seule trigrade est String, nouveaugrade est Variant car non typée
    eric

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 62
    Par défaut
    @Arturo : je te remercie je vais tester ce que tu me dis pour le tableau je ne pensais que cela marchait comme ca ( si cela marche aussi bien cela m’évitera plusieurs soucis )

    @ eric: concernant l'erreur de "tridyn" il faut passer sur une autre feuille et passer a nouveau sur celle la pour bien activer le "worksheet_activate" et si cela fonctionne le tableau col devrait se remplir ce qui n'était pas le cas lorsque je l'ai upload sur votre site .
    Pourrais tu m’expliquer pourquoi "nouveaugrade" serait-il non typé ? alors que "trigrade" est lui bien un string ? je n'arrive pas à saisir la nuance vu que pour moi ces deux variables reçoivent le même type d'info

    merci !!!

  14. #14
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    concernant l'erreur de "tridyn" il faut passer sur une autre feuille et passer a nouveau sur celle la pour bien activer le "worksheet_activate"
    J'avais bien compris, mais pas d'erreur.
    Fait en pas à pas avec F8 et regarde les valeurs prises par tes variables si elles correspondent à ce que tu attends


    Pourrais tu m’expliquer pourquoi "nouveaugrade" serait-il non typé ? alors que "trigrade" est lui bien un string ?
    Tout simplement parce que c'est comme ça en vba, et pas autrement.
    Contrairement à d'autres langages, il faut toutes les typer individuellement :
    Global nouveaugrade As String, trigrade As String

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 62
    Par défaut
    je te renvoie le fichier .
    perso a chaque fois que je tente de switch de feuille cela me fait une erreur '9' avec la ligne "tabCOL" surlignée jaune ne fais pas attention ai ajouté quelque petite chose pour mes test infructueux
    j'ai essayé de définir chaque tabXXX as string indépendamment comme tu me lavais dit pour "nouveaugrade" en espérant que cela résolve le problème mais rien n'y a fait
    Fichiers attachés Fichiers attachés

  16. #16
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    tabcol() n'est pas initialisé, nbtabcol est vide également.
    Il est temps que tu apprennes à mettre un Stop en début de proc, à faire en pas à pas avec F8, et à regarder les valeurs prises par tes variables.
    eric

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 62
    Par défaut
    Coool !!
    niquel c'est ca que j'avais changé au début et qui avait tout fait bugué
    A l'ouverture j'initialise mes tableaux sauf que un tableau à 0 n'existe pas et du coup j'avais fais une condition pour l'initialisé a 1 dans tous les cas .. sauf que j'avais oublié de mettre la condition si le tableau n'etait pas a 0 afin qu'il puisse s'initialiser normalement..
    j'ai fais mon boulet désole et merci de m'avoir sorti de ça sans quoi j'aurai pu tourner longtemps

    merci encore

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

Discussions similaires

  1. Opérations tableau avec double indice
    Par Le Feu dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 11/02/2009, 01h17
  2. [Débutant] problème de tableau et d'indice
    Par pompier21 dans le forum Interfaces Graphiques
    Réponses: 24
    Dernier message: 07/01/2009, 21h02
  3. Problème de tableau avec le HTML
    Par bodysplash007 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 23/05/2007, 16h38
  4. [Tableaux] Problème de tableau avec les strings
    Par roxxxy dans le forum Langage
    Réponses: 4
    Dernier message: 09/03/2007, 12h04
  5. Problème de tableau avec IE
    Par ninikkhuet dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 12/10/2006, 14h14

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