Beug Programme gérant des tableaux Excel

Bonjour,

Je suis assez nouveau dans le langage et suis embêté sur un petit programme, ou plutôt une ligne de programme que j'utilise dans plusieurs documents.

Je doit gérer en automatique pas mal de tableaux excel. J'ai donc créé une fonction qui me permet de nommer et créer un nouveau tableau sans entrer en conflit avec un nom de tableau déjà existant. Ce nom de tableau est stocké dans la variable "nomTab".

Dans mon exemple, les tableaux sont créés à intervalles réguliers et comprennent 3 colonnes, avec une colonne vide qui séparent chacun. Dans la feuille où je rencontre le problème, le premier tableau se trouve dans la colonne C à E. (excusez moi si je ne suis pas clair ^^').

Bref, on appui sur un bouton et le tableau est créé et placé automatiquement.Jusque là c'est impeccable tout fonctionne.

Mon problème réside dans la sélection du tableau. Voici la partie du code qui me pose problème :

nomTab = nomTabF 'Appel de la fonction qui détermine automatiquement le nom du tableau

ActiveSheet.ListObjects(nomTab).TableStyle = "TableStyleMedium7"

Comme je l'ai dit, tout marche; A l'exception du 2ème et 3eme tableau, où la ligne en rouge génère cette erreur : "La méthode select de la classe range a échoué".

Impossible de faire fonctionner la macro quand le tableau que je veux créer se situe dans les colonnes G à M (emplacement du 2eme et 3eme tableau)

Et pourtant pour les autres ça marche du premier coup! Je change de feuille et rechange, avec des feuilles vides, le problème reviens toujours pour les mêmes tableaux. A partir du 4ème tableau, ca fonctionne, jusqu'à ce que je teste la limite, et ça replante après une vingtaine de tableau créés, à la colonne BX!

Je ne comprend pas pourquoi cette méthode de sélection plante de cette manière, de façon "fidèlement aléatoire".

Est ce que vous avez une idée d'où le problème viens? Ou avez vous une méthode de sélection plus fiable?

Merci d'avance ! et désolé si je ne suis pas clair

PS : une fois avoir écris tout ce blabla j'ai essayé de donné la coordonnée complète du tableau (thisworkbook.worksheet...) mais sans succès le problème revient toujours pour les mêmes colonnes

Bonjour,

Et j'aurai tendance à demander pourquoi tu veux faire un .Select qu'on cherche normalement à éviter le plus possible ?

eric

Bonjour,

Merci pour ta réponse et désolé je n'avais pas vu qu'on pouvait joindre un fichier . (eh oui les ingé d'aujourd'hui c'est plus ce que c'était... XD )

Le select c'est pour la mise en forme du tableau et de la feuille en général, car beaucoup de monde va utiliser le fichier et nous devons respecter un certain formalisme. Je ne les utilise quasi que pour les lourdes procédures de mise en forme.

Et du coup quand j'ai posté le problème j’étais vraiment bloqué et perdu mais après une nuit de sommeil (et une autre prise de tête quand même) j'ai réussi à trouver c'était tout bête... Désolé pour le dérangement

Pour la réponse :

Ce que je ne savais pas c'est que les noms des tableaux doivent être différents non seulement sur la feuille, mais aussi tout le classeur. Quand j’essaie d'insérer un tableau avec un nom de tableau déjà existant dans la feuille, j'ai une erreur et le tableau n'est pas créé. Mais quand le tableau est dans une autre feuille, ça marche, mais excel rajoute automatiquement "_X" par exemple "Tableau9_1" au lieu de "Tableau9". Ce que je n'avais pas remarqué et ce qui explique pourquoi cela plante sur certains tableaux bien précis.

Il existait déjà un "Tableau2" et 3 dans un autre fichier, donc en demandant la création du tableau nomTab = "Tableau2" le tableau est créé sou le nom "Tableau2_1". Et un écart se créé entre nomTab et le nom réel du tableau, ce qui fait échouer la sélection...

J'espère au moins que ça aidera une autre personne en détresse

Merci eriiic !

Bonjour,

pas besoin de sélectionner pour des mises en forme.

With ton_range fonctionne très bien.

eric

Bonjour à tous

Tu gardes comme noms Classeur1, Feuil1, etc ?

Non ? Alors prend l'habitude de nommer ou renommer correctement tes tableaux : c'est plus propre et évite les problèmes

Merci pour vos conseils eriic et chris!

"With ton_range fonctionne très bien. " Quand j'ai plein de with qui se suivent par simplicité ça m'arrive de sélectionner. Mais je vais faire des efforts pour corriger cette mauvaise habitude

"Tu gardes comme noms Classeur1, Feuil1, etc ? " Du tout, je donne toujours un nom aux feuilles et classeurs. Pour ce qui est du tableau, le nom n'était effectivement pas très propre car il s'approche des nom donnés par défaut par excel : nomTab = "Tableau" + cstr(cpt).

Suite à mon problème j'ai remplacé cette ligne par ces deux la :

nomFeuil = Replace(w.Name, " ", "_") 'je passe par une variable car je réutilise le résultat un bon nombre de fois

nomTabF = nomFeuil + CStr(cpt)

(avec actualisation des nom de tableau à la modification de la feuille, pour éviter des conflits ^^)

Encore merci pour le temps que vous m'avez accordé

Rechercher des sujets similaires à "beug programme gerant tableaux"