× Aidez la recherche contre le COVID-19 avec votre ordi ! Rejoignez l'équipe PC Astuces Folding@home
 > 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 !


Les bons plans du moment PC Astuces

Tous les Bons Plans
26,99 €Lot de 2 prises connectées Wi-Fi TP-Link HS110 et HS100 à 26,99 €
Valable jusqu'au 28 Novembre

Amazon fait une promotion sur le lot de 2 prises connectées Wi-Fi TP-Link HS110 et HS100 qui passe à 26,99 € au lieu d'une quarantaine d'euros habitutellement. Ces 2 prises peuvent être contrôlées à distance en utilisant l'app gratuite KASA sur votre smartphone (iOS ou Android). Vous pouvez créer des planifications horaires pour allumer ou éteindre automatiquement et quand vous le souhaitez, les appareils qui y sont branchés. La prise HS110 offre en plus l'analyse en temps réel la consommation électrique d'un équipement et accèder à l'historique de la consommation. Les deux prises sont compatibles Google Home, Amazon Alexa et IFTTT.


> Voir l'offre
3,19 €Jeu PC Among Us à 3,19 €
Valable jusqu'au 28 Novembre

Steam fait une promotion sur le jeu dont tout le monde parle : Among Us qui passe à 3,19 € sur PC. Jouez de 4 à 10 personnes en ligne ou en local. Préparez votre vaisseau au départ mais attention, un ou plusieurs joueurs sont des imposteurs et feront tout pour tuer tout le monde. Notez que s'il n'offre pas le même confort de jeu en mobilité, il est gratuit sous iOS et Android.


> Voir l'offre
7,99 €Thermomètre frontal infrarouge à 7,99 € avec le code RMSA7Z45
Valable jusqu'au 28 Novembre

Le vendeur Luckycat propose actuellement sur Amazon le thermomètre frontal infrarouge à 7,99 € avec le code promo RMSA7Z45. Il possède un écran LCD qui affiche la température mesurée (entre 32 à 42,9 °C) avec un arrière-plan coloré suivant la température. Fonctionne avec 2 piles AAA (non fournies). Fonctionne également pour l'eau du bain, le lait, etc.


> Voir l'offre

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