Redimensionner automatiquement un tableau

patwoman

XLDnaute Nouveau
Bonjour tout le monde,

J'ai besoin de votre aide, parce que je bloque sur un truc qui semble pourtant basique..... :mad:

J'ai un super outil sur excel, construit pour une région, où les tableaux présentent une ligne par village.

Vu qu'il est super, cet outil, je veux le rendre adaptable à d'autres projets. Et donc à un peu l'automatiser. Et donc à redimensionner automatiquement ce(s) foutu(s) tableaux, pour que le nombre de lignes s'adaptent au nombre de village saisis par l'utilisateur...

Mais en fait, vous le verrez si vous ouvrez le fichier, je n'arrive tout simplement pas du tout à redimmensionner ce tableau via macro :(

Quelqu'un pourrait me donner un indice ?

Merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
 

Pièces jointes

  • redim tableau.xlsm
    36 KB · Affichages: 118

Modeste

XLDnaute Barbatruc
Re : Redimensionner automatiquement un tableau

Bonsoir patwoman et bienvenue,

Dans ton fichier, la plage C25:Y27 est déjà un tableau (nommé Tableau3) ... qui se redimensionne automatiquement chaque fois qu'un nom de village sera ajouté en colonne C :confused:

Comme il n'y a pas grand chose en matière de code, dans ton classeur, on ne peut savoir sur quel point tu rencontres un problème!? (sauf que ReDim Tableau3(50) ne s'applique pas à ce type de tableau, mais aux variables de type array ... ce qui n'est pas la même chose!)
 

patwoman

XLDnaute Nouveau
Re : Redimensionner automatiquement un tableau

Merci pour ta réponse Modeste,

Ca m'eclaire un peu : je comprends pas trop la difference entre les plages nommées dans excel et celle des macros, et en plus je viens de découvrir aussi les tableaux sur excel.

Donc j'avais pas capté le redimensionnement automatique (qui va bien m'aider en fait, non ?)

Et ce que je voudrais donc faire maintenant, c'est que d'un clic, les valeurs entrées dans "Nom de village" se copient dans la colonne C de ce(s) tableau(x)

lNom_Village.Paste ? Un truc du genre ?

Pfffff, je pensais qu'avec mes bases html et sql, je capterais facile le peu dont j'ai besoin... Mais ya un truc que j'ai pas capté kekpart....

Merci beaucoup !
 

Paf

XLDnaute Barbatruc
Re : Redimensionner automatiquement un tableau

Bonjour à tous,

Pas sûr d'avoir tout compris. S'il s'agit de copier la liste des village dans le tableau à partir de C25

Code:
Sub copievillage()
 Dim Derlig1 As Integer, Derlig2 As Integer, WS1 As Worksheet, WS2 As Worksheet
 Set WS1 = Worksheets("1.1 Param Gene")
 Set WS2 = Worksheets("1.2 Population")
 Derlig1 = WS1.Range("E" & WS1.Rows.Count).End(xlUp).Row 'Dernière ligne utile de la feuille param
 WS1.Range("E36:E" & Derlig1).Copy WS2.Range("C25") 'copie la liste village et la colle à partir de C25
End Sub

macro à affecter au bouton( par exemple)

A+
 

patwoman

XLDnaute Nouveau
Re : Redimensionner automatiquement un tableau

C'est ca !!!!!! :DDDDDDDDDDDDDDDD

Merci beaucoup, ca fait des jours que je galere, c'est pas si simple que ca en fait les macros !

Question philo:
Comment interagir en VBA sur "objets nommés" excel. Comment ca se fait que avec VBA, j'arrive a interagir sur certains de ces objets, mais pas d'autres.... (clearcontents fonctionne bien pour certaines plages de cellule, mais pas du tout pour vNom_village par exemple....)
Ca m'embrouillle ! Si "un tableau" (excel) n'est pas du tout la même chose qu'"un tableau" (vba), forcement, les blondes galerent...!

Bonne journée tout le monde
 

Modeste

XLDnaute Barbatruc
Re : Redimensionner automatiquement un tableau

Bonjour patwoman, salut Paf :)

Si tu voulais faire un simple "copier-coller", il suffisait de le dire :rolleyes:
Avec la plage nommée, ceci aurait pu suffire aussi:
Code:
Range("lNom_village").Copy Sheets("1.2 Population").[C25]

Attention cependant:
- Si tu as de nombreuses feuilles dans ton classeur, la plage nommée sera différente!?
- une cellule vide dans la plage nommée en question entraîne une erreur, puisque le dernier nom de village n'est pas recopié, du coup!
- Si tu fais un copier-coller, tu ne le feras qu'une seule fois? Sinon, il faudra s'assurer que les noms de villages sont chaque fois identiques et dans le même ordre (ou alors les données des autres colonnes en feuille Population ne seront plus "cohérentes"!?)
... Enfin, moi, je dis ça ...

Un tableau (au sens Array en vba) est un emplacement réservé en mémoire, pour une variable "tableau". Les autres, nommés ou non, correspondent à des plages de cellules situées dans une feuille de calcul
 

patwoman

XLDnaute Nouveau
Re : Redimensionner automatiquement un tableau

Salut Modeste,

Ton message m'éclaire encore un peu plus sur ce monde merveilleux....!

L'idée est bien de ne faire le copier coller qu'une seule fois : on définit les villages au tout début du projet, mais après ils ne changent pas.
Je me rends compte que ca risque de faire des bugs.
Pour ca je pensais rajouter dans la macro : effacer le contenu des zones de saisies du tableau et supprimer les lignes, avant qu'il copie les noms de village. (et mettre un texte pour prevenir l'utilisateur que ses données, s'il y a, seront perdues...)
J'espere m'en sortir....

Mon idée de base n'était pas de juste faire un copier coller, mais plutot de "copier une ligne, l'inserer autant de fois qu'il y a de village et coller la liste des villages.... Mais en fait, c'est quand meme compliqué pour moi !!!

Pour l'histoire de cellules vides dans les noms de village : je m'en doutais, là aussi je comptais mettre un texte pour l'utilisateur du genre "ACHTUNG" !
Il y a un truc que je cherche depuis 3 jours, et que je trouve plus : c'est quoi la syntaxe correcte pour nommer une plage à l'aide de DECALER et END() ? Pour dire: de telle cellule de la colonne à la derniere remplie ? J'avais trouvé ca sur le net, mais je m'en sors plus....

Plage nommée différente ? Tu veux dire celle de(s) tableau(x) ? Je crois que je n'aurais pas trop le choix, si une plage nommée correspond à une plage de cellules, il faudra bien que je leur donne des noms différents, n'est ce pas ? La liste des villages, elle, est identique à tous les tableaux....

Un grand merci pour vos réponses
 

Modeste

XLDnaute Barbatruc
Re : Redimensionner automatiquement un tableau

Re,

Difficile de donner des pistes, sans connaître vraiment le fichier, le contexte, etc.

La première question à se poser est "Peut-il vraiment y avoir une (ou plusieurs!?) cellule vide dans la liste des noms de villages?" (en feuille Param) Si la chose n'a pas de raison d'être et que tu travailles avec du 2007, le plus simple serait de créer un tableau (par Insertion --> Tableau), ce qui t'évitera l'utilisation de DECALER dans la définition de la plage, puisque ce tableau-là se redimensionnera automatiquement aussi!
 

patwoman

XLDnaute Nouveau
Re : Redimensionner automatiquement un tableau

Bonjour,

Oui, je suis en train de regarder comment faire ca avec un tableau...
Je travaille pour le moment sur 2007 mais le fichier est amené à etre utilisé sur 2010 : ce que je fais en ce moment sera compatible ????

Merci encore
 

Modeste

XLDnaute Barbatruc
Re : Redimensionner automatiquement un tableau

Re et re-bonjour,

La notion actuelle de "tableaux" fonctionne en Excel 2007 et 2010 (pas encore vu le 2013! Mais je présume qu'ils n'ont pas encore changé!?)
Le retour à Excel 2003 poserait plus de problèmes (mais ce ne serait plus un fichier .xlsx, donc ce cas-là est improbable, je suppose!?)

... Pour le reste de ce que tu fais ... Mystère! :rolleyes:
 

patwoman

XLDnaute Nouveau
Re : Redimensionner automatiquement un tableau

Ouf, j'ai eu peur un instant.... :)

Pour le reste de ce que je fais : je me noie dans un outil excel que je dois simplifier et rendre adaptable facilement à d'autres projets... Mais vu que je ne maitrise pas trop les notions de base, j'ai du mal à m'exprimer !!!! :) :)

Mais j'ai déjà quelques pistes pour bien avancer, j'aurais donc peut etre des questions plus claires par la suite !

En tout cas, merci beaucoup, j'y vois deja un peu plus clair.
 

Discussions similaires

Statistiques des forums

Discussions
312 859
Messages
2 092 891
Membres
105 552
dernier inscrit
youcef.aksoum