> Tous les forums > Forum Bureautique
 [Excel 2007] Macro : Sélection d'un tableau selon sa longueur variable
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
Mike Portnoy
  Posté le 10/11/2014 @ 17:48 
Aller en bas de la page 
Petit astucien

Bonjour à tous,

Je suis en train de tenter de créer une macro pour mon travail. Le but est de sélectionner un tableau (voir mon tableau Excel - données inventées http://cjoint.com/?DKkrY04vhWM). Le souci est que le nombre de lignes de mon tableau est variable. Pour l'instant, j'ai créé la macro suivante :


  1. Dim AdresseAbsolue As String
  2. AdresseAbsolue = Range("A1").SpecialCells(xlCellTypeLastCell).Address
    Range("A1", AdresseAbsolue).Select

Cela ne me convient pas, car comme vous pourrez le constater dans le tableau, une formule est présente jusqu'à la cellule E28 (je dois le garder pour une autre macro).

De ce fait, quand je lance la macro, même les lignes où il y a que la formule sont sélectionnées, ce que je veux éviter.

Merci d'avance de votre aide !
Publicité
Mike Portnoy
 Posté le 10/11/2014 à 17:54 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Pour vous simplifier l'explication :

Ce que fait ma macro actuelle :

Ce que je veux qu'elle fasse :

ferrand
 Posté le 10/11/2014 à 18:52 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonsoir,

Si tu donne un nom dynamique à la plage que tu souhaites sélectionner, par exemple Plage, définie par (rubrique Fait référence à ) :

=DECALER(Feuil1!$A$1;;;NBVAL(Feuil1!$A:$A);5)

[sous réserve que ton tableau réel ait bien les mêmes caractéristiques que ton modèle]

Ta macro peut se réduire à :

Range("Plage").Select

Ceci dit, sauf si l'action projetée est justement de sélectionner (pour sélectionner !), la sélection est en principe inutile si une autre action est envisagée.

Mike Portnoy
 Posté le 11/11/2014 à 08:29 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

ferrand a écrit :

Bonsoir,

Si tu donne un nom dynamique à la plage que tu souhaites sélectionner, par exemple Plage, définie par (rubrique Fait référence à ) :

=DECALER(Feuil1!$A$1;;;NBVAL(Feuil1!$A:$A);5)

[sous réserve que ton tableau réel ait bien les mêmes caractéristiques que ton modèle]

Ta macro peut se réduire à :

Range("Plage").Select

Ceci dit, sauf si l'action projetée est justement de sélectionner (pour sélectionner !), la sélection est en principe inutile si une autre action est envisagée.

Bonjour,

Le problème est que le nombre de lignes du tableau peut changer selon les indications que je vais enlever ou ajouter du tableau.

Je souhaiterai après ma sélection ajouter une mise en forme au tableau (bordures, couleur de cellule, etc.) grâce à une autre macro.

ferrand
 Posté le 11/11/2014 à 14:11 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Je crois que tu n'as pas compris ! C'est justement parce que les dimensions d'un tableau peuvent varier que nommer dynamiquement la plage de cellules correspondant audit tableau a toute sa raison d'être, pour que le nom puisse à tout moment correspondre à la plage, quelles que soient les variations de dimensions.

C'est pour cela que l'adresse de la plage nommée n'utilise pas des références fixes mais la fonction DECALER, dont la syntaxe est :
DECALER(plage de référence;décalage lignes; décalage colonnes;nombre de lignes;nombre de colonnes)

plage de référence est la cellule supérieure gauche de la plage nommée, qui doit être fixe (dans ton tableau modèle, il s'agit de A1)
décalage lignes et décalage colonnes sont nuls par définition dans cette utilisation, ce pourquoi on ne met rien
nombre de lignes est variable, ce pourquoi on l'évalue au moyen de la fonction NBVAL pour compter le nombre de lignes utilisées dans une colonne (il convient donc que lors de l'extension du tableau la colonne retenue ne comporte pas de cellule vide ; toute colonne répondant à ce critère peut être retenue, dans ton cas, la colonne garnie de formules est naturellement à exclure car NBVAL renverrai alors une valeur ne correspondant pas aux lignes du tableau)
nombre de colonnes, souvent fixe, on met donc tout simplement ce nombre (ce qui est ton cas dans ton modèle, si le nombre de colonnes devait varier on utiliserait également NBVAL pour le définir, en principe sur la première ligne, de façon analogue au calcul du nombre de lignes).

Il serait donc bon que tu fasses l'essai pour t'en convaincre !

Pour la suite, si ton objectif est de mettre en forme cette plage en utilisant une macro, il suffit d'écrire les commandes de mise en forme souhaitée de la plage dans la macro, sans avoir à la sélectionner au préalable, ce qui ne constituerait qu'une opération parasite totalement superflue !

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Sujets relatifs
Récupération dates dans tableau excel 2007
besoin d'une macro excel 2007
excel 2007 macro mise en page, quadrillage, filtre
Excel 2007 macro rajouter tri + cellule en surbrillance à chaque changement
tableau et quadrillage (excel 2007)
macro sous excel 2007
(Macro) Copier onglet sur autre fichier Excel (2007)
Probleme excel - tri dans macro Excel 2007
excel vba passer une variable de commande vers macro
macro majuscule dans excel 2007
Plus de sujets relatifs à [Excel 2007] Macro : Sélection d''un tableau selon sa longueur variable
 > Tous les forums > Forum Bureautique