Selectionner un tableau dynamique

Bonjour,

Je viens de commencer à utiliser VBA pour des projets Exels.
J'ai donc suivis la formation disponible sur le site mais je bloque encore sur (je pense) des details. Voici donc mon projet

Je dois dans le cadre de mon travail enregistrer les plaintes clients. J'aimerai pouvoir les classifier dans 3 tableaux differents
- 1er avec les plaintes du jour (au jour suivant, elles basculeraient dans un autre tableau et celui ci serait vidé)
- 2eme avec les plaintes "anciennes" mais encore ouvertes (càd non résolues)
- 3eme avec les plaintes 'anciennes" fermées, donc résolues. Ce serait donc un tableau d'archives

Chaque tableau comporte les colonnes suivantes:
Date | Staff | Client | Info (plainte) | Urgence | Département concerné | Résolu ou non

________________________________________________________________________________________________________________________

Voici le problème qui m'empêche d'avancer...

J'ai remplis mon tableau 1 avec les données necessaires directement dans la feuille de calcul, puis dans un module j'ai déclaré ce tableau comme un tableau dynamique, étant donnée que le tableau changera de dimension tous les jours.

Dim tab1()

J'ai ensuite défini le nombre de ligne (variable sur max 30 lignes)/

NbLigne = WorksheetFunction.CountA("A5:A34")

Et le nombre de colonne (fixe)/

Nbcolonne =WorksheetFunction.CountA("A5:P5") 

Pour enfin redimensionner mon tableau/

ReDim tab1(NbLigne, Nbcolonne)

A ce stade, j'aimerai avoir la possibilité de selectionner tout mon tableau afin de vérifier que je l'ai bien dimensionné et pour pouvoir en suite lui appliquer des formules comme IF, Count....

Et c'est cette selection qui me pose problème. J'ai essayé de définir tab1 comme un objet qui dépendrait donc du nombre de ligne:

tab1 = ("ANbLigne : PNbLigne")

et bien d'autre encore. Il semblerait que le problème réside dans l'utilisation de mot (meme s'ils sont censés etre referencés comme des chiffres?)

Si quelqu'un a une solution à me proposer ca serait génial ! Merci beaucoup !

Popsy :)

Bonjour,

Petite astuce pour enregistrer tout un tableau dans une feuille Excel dans un tableau VBA en une seule ligne de code:

Si le tableau commence en A1 on peut écrire:

tableau = Range("A1").CurrentRegion.Value

Le résultat: ça crée une variable tableau qui va avoir deux dimensions dont le premier index est 1.

Le tableau contiendra l'équivalent de la sélection qu'on a si on se place sur A1 et qu'on fait le raccourci Ctrl + *

Il aura donc la totalité du tableau dont fait partie A1.

Pour connaître les dimensions du tableau il faut utiliser les fonctions LBound et UBound pour avoir la limite basse et limite haute pour une dimension du tableau.

Par exemple si le tableau a 20 lignes et 5 colonnes:

Debug.Print LBound(tableau, 1) ' 1
Debug.Print UBound(tableau,1)' 20
Debug.Print LBound(tableau, 2) ' 1
Debug.Print UBound(tableau,2)' 5

LBound et UBound ont besoin de 2 infos: la variable tableau dont on veut connaître la limite, et la dimension, UBound(tableau, 1) donne donc la limite haute de la première dimension du tableau (les lignes).

On ne peut à ma connaissance pas sélectionner tout un tableau en écrivant par exemple tableau(1:5, 1:2).

On ne peut appeler qu'une cellule à la fois dans le tableau VBA, en écrivant par exemple tableau(1,5) pour avoir la première ligne, 5ème colonne.

Si on veut parcourir toutes les cellules d'un tableau, on peut utiliser des boucles:

Dim lig as Integer, col as Integer

For lig = 1 to UBound(tableau,1)
    For col = 1 to UBound(tableau,2)
        tableau(lig,col) = 1
    Next col
Next lig

Par exemple ici on écrit 1 dans chaque cellule du tableau, ligne par ligne, et pour chaque ligne, colonne par colonne.

Avec les tableaux, on peut en revanche écrire:

tableau2 = tableau

Pour copier le contenu de la variable tableau dans tableau2.

Range("A1").Resize(UBound(tableau,1), UBound(tableau,2)).Value = tableau

Pour sortir l'intégralité du contenu sur une plage de cellules d'un seul coup.

Dans le cas où on veut éclater un tableau sur plusieurs feuilles, il faudra je pense boucler sur les lignes du tableau, enregistrer par exemple dans une Collection les numéros des lignes qui vont dans une feuille spécifique. Redimensionner un nouveau tableau pour accueillir ces lignes, copier les lignes du premier tableau dans le deuxième, puis exporter les données du second tableau dans une plage de cellules.

Rechercher des sujets similaires à "selectionner tableau dynamique"