Comment créer une Plage dynamique composée de certaines lignes d'un tableau

ckoebel5

XLDnaute Junior
Bonjour,
Mon question est la suivante:

Dans le fichier ci joint, j'ai des élèves qui sont séléctionnés en soutien lorsqu'il y a le nombre 1 qui est affiché dans la plage SélSout du tableau(colonne "groupe").
Comment définir une plage dynamique composée uniquement des lignes du tableau où il y a "1" dans la colonne groupe?

Merci beaucoup.
Cordialement.
 

Pièces jointes

  • Classeur1.xlsx
    16.7 KB · Affichages: 93
  • Classeur1.xlsx
    16.7 KB · Affichages: 106
  • Classeur1.xlsx
    16.7 KB · Affichages: 117

Misange

XLDnaute Barbatruc
Re : Comment créer une Plage dynamique composée de certaines lignes d'un tableau

Bonjour
Que veux tu faire avec la plage dynamique par la suite ?
Si tu veux construire des graphiques ou autre, un vrai tableau (onglet accuiel/style/mettre sous forme de tableau) est une bonne solution (voir ci joint). Sinon explique la suite :)
 

Pièces jointes

  • Copie de Classeur1.xlsx
    20.1 KB · Affichages: 119
  • Copie de Classeur1.xlsx
    20.1 KB · Affichages: 129
  • Copie de Classeur1.xlsx
    20.1 KB · Affichages: 128

ckoebel5

XLDnaute Junior
Re : Comment créer une Plage dynamique composée de certaines lignes d'un tableau

Bonjour
Que veux tu faire avec la plage dynamique par la suite ?
Si tu veux construire des graphiques ou autre, un vrai tableau (onglet accuiel/style/mettre sous forme de tableau) est une bonne solution (voir ci joint). Sinon explique la suite :)

Je voudrais créer et nommer une plage (par exemple nommée "gpe de travail"), cette plage serait variable et définie par le résultat "1" d'une formule (dans la colonne groupe), afin de pouvoir programmer en vba des procédures qui ne concerneraient que la plage en question.
 

Misange

XLDnaute Barbatruc
Re : Comment créer une Plage dynamique composée de certaines lignes d'un tableau

Il faut dans ce cas que tu travailles avec des arrays dans lesquels tu récupères les valeurs des lignes qui t'intéressent.
C'est et de loin la méthode la plus efficace en terme de rapidité de traitement si tu as beaucoup de données (voir les tutos sur les arrays sur excelabo.net)

Ou alors que tu passes par un filtre élaboré et que tu travailles sur les plages définies sur la sortie de ce filtre.

Sinon, tu peux dans ta macro travailler sur l'ensemble de la plage (je te conseille ++ l'emploi des tableaux au sens excel du terme de toutes façons, ça t'évite de définir toi même les noms dynamiques associés à ces tableaux) et tester la condition avant d'appliquer la suite de ta macro.

Mais tu ne peux pas définir une plage discontinue excluant les valeurs qui ne t'intéressent pas.
 

ckoebel5

XLDnaute Junior
Re : Comment créer une Plage dynamique composée de certaines lignes d'un tableau

Mais tu ne peux pas définir une plage discontinue excluant les valeurs qui ne t'intéressent pas.

Bon ben je suis déçu qu'excel ne fasse pas cela, on peut bien par exemple sélectionner des plages discontinues ( par ex. Range("C9,5:5,7:7,11:11,13:16,18:18"), je pensais qu'il était possible de les rendre dynamiques et de les nommer.

Bon je vais explorer les tutos des arrays que j'ignore totalement mais qui vont m'instruire:)

Sinon je vais explorer la troisième possibilité ( si j'ai bien compris: créer une nouveau tableau de taille variabledans lequel sont inscrits uniquement les élèves concernés, c'est ça? en VBA donc?)
 

Spinzi

XLDnaute Impliqué
Re : Comment créer une Plage dynamique composée de certaines lignes d'un tableau

Bon ben je suis déçu qu'excel ne fasse pas cela, on peut bien par exemple sélectionner des plages discontinues ( par ex. Range("C9,5:5,7:7,11:11,13:16,18:18"), je pensais qu'il était possible de les rendre dynamiques et de les nommer.

Bon je vais explorer les tutos des arrays que j'ignore totalement mais qui vont m'instruire:)

Sinon je vais explorer la troisième possibilité ( si j'ai bien compris: créer une nouveau tableau de taille variabledans lequel sont inscrits uniquement les élèves concernés, c'est ça? en VBA donc?)

Je pense qu'en créant un autre onglet simplement, dans lequel une formule renvoie tes valeurs si vrai
Code:
=Si(Index(Nom des éleves;Equiv(1;Valeurs a trier;0))

Avec une définition de plage en dynamique
Code:
NomsEleves=decaler(A6;;;NBVAL(A:A)-1)
ValeursEleves=decaler(NomsEleves;;3;;

ps : exemples pris, tu l'auras j'espere remarqué, au hasard ;)
 

Misange

XLDnaute Barbatruc
Re : Comment créer une Plage dynamique composée de certaines lignes d'un tableau

Bon je vais explorer les tutos des arrays que j'ignore totalement mais qui vont m'instruire:)

Ca parait complexe en première approche mais c'est extrêmement puissant et ça vaut de le coup de t('y mettre si tu as un peu de temps (la rentrée des classes n'est pas demain :) )

Sinon je vais explorer la troisième possibilité ( si j'ai bien compris: créer une nouveau tableau de taille variabledans lequel sont inscrits uniquement les élèves concernés, c'est ça? en VBA donc?)
PAs en VBA : tu fais un filtre élaboré avec une extraction sur une autre feuille.

Ce lien n'existe plus
 

ckoebel5

XLDnaute Junior
Re : Comment créer une Plage dynamique composée de certaines lignes d'un tableau

Bonjour à tous ou bonsoir!

J'ai posé la question suivante sur le très bon site excelabo
Ce lien n'existe plus

Si je créer un array à 3 dimensions, que je travaille avec et donc que je modifie son contenu...
Comment puis je le stocker à la fermeture d'excel afin que si je réouvre excel il soit encore intact?
Je repose ma question avec d'autres mots: Imaginons que mon array soit un rubix cube et que je le modifie... et après, je veux éteindre mon ordi. Faut-il d'abord découper mon cube en couches et sauvegarder chaque couche dans des feuilles excel ou est-ce inutile?
Et si mon array a 4 dimensions?
Merci.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Comment créer une Plage dynamique composée de certaines lignes d'un tableau

Bonsoir ckoebel5,

Pour la sauvegarde de ton tableau Tablo à 3 dimensions, tu peux le sauvegarder en liste sur une feuille.
Exemple: Inscrire sur une feuille:
A1 => borne inf de la dimension 1 B1 => borne sup de la dimension 1
A2 => borne inf de la dimension 2 B2 => borne sup de la dimension 2
A3 => borne inf de la dimension 3 B3 => borne sup de la dimension 3
Puis trois boucles imbriquées (une sur les indices i de la dimension 1, une sur les indices j de la dimension 2, une sur les indices k de la dimension 3) qui à chaque passage descendent d'une cellule et y inscrivent la valeur Tablo(i,j,k) - à partir de A4 - attention au changement de colonne si on arrive au bas de la feuille -

La lecture se fait de la même manière: lecture des bornes puis trois boucles imbriquées pour lire les éléments de la colonne à partir de A4. Idem pour 4 dimensions ou plus
 
Dernière édition:

Misange

XLDnaute Barbatruc
Re : Comment créer une Plage dynamique composée de certaines lignes d'un tableau

Bonjour
Je serai heureuse d'avoir des exemples concrets d'arrays à 3 dimensions (plus encore à 4 !!). On ne peut pas dire que ça pullule sur le net.
Concernant ta demande, je ferai comme Mapomme (hello !) mais je ne vois vraiment pas la logique du truc : pourquoi construire un array, le modifier et n'en rien faire jusqu'à la prochaine ouverture d'excel ? D'où viennent les données dans cet exemple concret ? A quoi sert l'array ? est-ce que c'est juste une question théorique (auquel cas je trouve qu'il y a déjà assez de trucs concrets réels à faire pour éviter d'inventer de nouveaux problèmes :) ) ou bien est-ce une situation réelle ?
 

Discussions similaires