IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Seléctionner les 3 dernières colonnes d'un tableau à taille variable [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2011
    Messages : 13
    Points : 7
    Points
    7
    Par défaut Seléctionner les 3 dernières colonnes d'un tableau à taille variable
    Bonjour à tous,

    Après des recherches infructueuses je me retourne vers vous. J'ai une feuille de calcul excel qui n'a jamais le même format et je souhaite simplement trouver une macro qui séléctionnera les 3 dernières colonnes.
    Comme ces colonnes ne sont pas dans les mêmes numéros de colonnes je n'arrive pas à trouver le moyen de les seléctionner.
    La seule chose qui permette de les réperer sont que ce sont les 3 dernières colonnes avant qu'il n'ai plus rien j'avais donc pensé à cela mais cela ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub séléction_colonne()
     
    For i = 1 To 100
    If Cells(1, i).Value = "" Then i = nb
        Columns("nb").Select
        Columns("nb-1").Select
        Columns("nb-2").Select
    End Sub
    D'autant que ce qui ne m'arrange pas dans cette méthode et que je dois faire une boucle, n' y a t'il pas plus simple ?

    Merci de votre aide

    Bon après midi à vous.

  2. #2
    Membre habitué Avatar de LouiMz
    Homme Profil pro
    Inscrit en
    Février 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 104
    Points : 154
    Points
    154
    Par défaut
    Bonjour,

    Si il n'y a rien après les colonnes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dim j as Integer
     
    'Recupere le numero de la derniere colonne non vide (sur la ligne 1)
    'Modifier le range en fonction de la ligne où commence le tableau
    j = Range("IV1").End(xlToLeft).Column
    En espérant avoir répondu
    Cordialement

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2011
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Bonjour Louis,

    Merci pour ta réponse. Pardon pour mon ignorance mais que dois-je mettre dans le range ? En effet d'après moi le range est constitué d'un numéro de colonne. Mais dans mon cas je ne souhaite pas inscrire un numéro de colonne, je souhaite que la macro le trouve toute seul car il changera tout le temps. Le tableau ne fait jamais les même dimensions.

    Merci à toi.

    Cordialement

    Ron

  4. #4
    Membre habitué Avatar de LouiMz
    Homme Profil pro
    Inscrit en
    Février 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 104
    Points : 154
    Points
    154
    Par défaut
    Re,

    En fait le but de cette ligne est de partir de la derniere colonne possible sous Excel (la colonne "IV" sous 2000, par exemple).

    Donc en fait, on part de cette colonne jusqu'à ce qu'on tombe (End(xltoleft)) sur la premiere cellule non vide et on lui affecte le numero de colonne.

    Le but est de partir d'une colonne très éloignée, qui ne contiendra jamais de données , donc de la cellule Range("IV1") par exemple.

    C'est la methode que j'utilise pour lire mes tableaux croisés dynamiques car il tombera systématiquement sur la derniere cellule non vide d'un tableau et donc la derniere colonne.

    Je n'ai pas d'autre proposition. Desolé
    Cordialement

  5. #5
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Bonjour,

    Une solution (pas vraiment académique)

    Sélectionne les 3 dernières colonnes du tableau actif (Correspondant à la cellule active)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Columns("" & Split(Sheets(1).Cells(1, ActiveCell.End(xlToRight).Column - 2).Address, "$")(1) & ":" & Split(Sheets(1).Cells(1, ActiveCell.End(xlToRight).Column).Address, "$")(1)).Select
    Jérôme

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2011
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    re,

    J'ai compris ta logique et je compte m'en servir aussi c'est une bonne idée, seulement je me retrouce confronté à un problème très bête. Une fois que j'ai réussi à déclarer la colonne (dans ton exemple : j)

    Lorsque j'écrit

    Il mem séléctionne la colonne J. et il ne comprend pas quand je lui écris :

    Comment séléctionne-t-on après ?

    Merci bien

    Ron

  7. #7
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Le code fournit fait cela.

    Je récupère la lettre correspondant à l'index de la dernière colonne -2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Split(Sheets(1).Cells(1, ActiveCell.End(xlToRight).Column - 2).Address, "$")(1)
    Jérôme

  8. #8
    Membre habitué Avatar de LouiMz
    Homme Profil pro
    Inscrit en
    Février 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 104
    Points : 154
    Points
    154
    Par défaut
    Ron:

    Il suffit de supprimer les guillemets "".

    Jerome:

    Merci pour cette idée Monsieur Jerome ^^ Je n'avais jamais pensé à coupler la fonction Split et les adresses.

    ++
    Cordialement

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2011
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    J'avance petit à petit :

    J'ai réussi à définir quel est le numéro (variable) de la colonne qui m'intéresse en l'écrivant de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim colonne As Integer
    colonne = Range("IV1").End(xlToLeft).Column
    Lorsque je souhaite ensuite slectionner la colonne qui a le numéro "colonne". Cela ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Columns("colonne:colonne-2").Select
    Quelqu'un connait-il la syntaxe pour séléctionner une colonne à partir d"une variable ?

    Merci pour votre aide.

    Ron

    Même sans les guillemets cela ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Columns(colonne:colonne-2).select
    ne fonctionne pas il attend un "séparateur de liste".

    Pour l'idée de jérome, elle semble tres efficace mais un peu compliqué pour moi, je préfère comprendre ce que j'écris (C'est vrai que ca limite mais c'est préférable je pense)

    Cdt

    Ron

  10. #10
    Membre habitué Avatar de LouiMz
    Homme Profil pro
    Inscrit en
    Février 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 104
    Points : 154
    Points
    154
    Par défaut
    Re,

    Désolé je n'avais pas tout dis ^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim j As Integer
     
    j = Range("IV1").End(xlToLeft).Column
     
    Columns(j).select
    Range(Selection, Columns(j-1)).select
    Range(Selection, Columns(j-2)).select
    En espérant que c'est bon
    Cordialement

  11. #11
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Le code fournit sélectionne les 3 dernières colonnes.

    Dans ton code tu cherches a sélectionner à la suite les 3 dernières colonnes, mais seul la colonne j-2 sera sélectionnée.

    Que veux tu faire ???
    Jérôme

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2011
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Je dirai que c'est PARFAITEMENT BON !

    Merci à tout les deux pour votre aide !

    Bonne continuation à vous.

    Ron

  13. #13
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2007
    Messages : 120
    Points : 181
    Points
    181
    Par défaut
    Salut le forum

    Peut-être comme ceci pour la ligne 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim NumCol As Long
     
    NumCol = Cells(1, Cells.Columns.Count).End(xlToLeft).Column
     
    If NumCol < 3 Then MsgBox "Sélection impossible": Exit Sub
     
    Cells(1, NumCol).Offset(, -2).Resize(, 3).Select
    Mytå_Qc

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] comment séléctionner la dernière colonne d'un tableau donné en vba
    Par skipeemed dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 04/11/2010, 13h31
  2. [OpenOffice][Texte] Aligner les N dernières lignes d'un tableau sur le bas de page
    Par tchize_ dans le forum OpenOffice & LibreOffice
    Réponses: 1
    Dernier message: 25/08/2010, 16h09
  3. fixer les x premieres colonnes d'un tableau
    Par italiasky dans le forum jQuery
    Réponses: 2
    Dernier message: 21/05/2010, 02h59
  4. Garder les intitulé de colonnes d'un tableau fixes
    Par royto dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 26/03/2007, 16h41
  5. Supprimer toutes les lignes et colonnes d'un tableau
    Par pekka77 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 01/12/2005, 11h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo