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 :

[VBA-E]Sélection de plusieurs colonnes


Sujet :

Macros et VBA Excel

  1. #1
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut [VBA-E]Sélection de plusieurs colonnes
    Désolé pour le titre mais jen'ai pas trouvé mieux
    Vu le titre, la question a l'air complètement idiote, et elle l'est et pourtant je trouve pas de solution
    Je vous montre la macro vous dirait après ce que je veux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub InsertColumn()
    Dim f As Worksheet
    Set f = Worksheets("Feuil1")
    Columns(NumColonne("Feuil1")).Select
    MsgBox (Columns(1, 1).Name)
    Selection.Insert Shift:=xlToRight
    Selection.AutoFill Destination:=Columns(NumColonne("Feuil1") - 1 & ":" &  NumColonne("Feuil1")), Type:=xlFillDefault
    Columns(NumColonne("Feuil1") - 1).Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
            False, Transpose:=False
    End Sub
    Pour information, la fonction NumColonne permet de calculer le numéro de la colonne afin de savoir où insérer ma colonne (pour mon cas par exemple NumCOlonne est égal à 72 je crois )
    Ce que je veuxf aire c'est "sélectionner" 2 colonnes pour tirer les formules de la colonne précédente sur la colonne créée mais ça marche pas ocmme ça et je sais pas comment passer par les chiffres
    En fait quand je fais la macro par l'assistant il me donne ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Columns("BS:BS").Select
        Selection.AutoFill Destination:=Columns("BS:BT"), Type:=xlFillDefault
        Columns("BS:BT").Select
    Il utilise les lettres pour dénomer les colonnes

    Or moi ce que je veux ce n'est pas utiliser les lettres des colonnes, mais le numéro de la colonne afin de pouvoir l'utiliser dans la procédure au dessus, en sélectionnant 2 colonnes, pour pouvoir tirer mes formules de la colonne précédente (moi avoir été compris ? )


    Sinon si vous avez un moyen pour récupérer le "nom" de la colonne, cad la lettre je suis preneur aussi car columns.name ça marche pas (sachant que si je prend le "nom" il faudra quand meme que je puisse prendre la lettre précédente pour tirer mes formules..)

    Bref j'aimerai bien savoir comment sélectionner 2 colonnes par leur numéro, et non par leur lettre

    J'espère avoir été compris si vous avez des questions hésitez pas

    Merci pour votre aide
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  2. #2
    Membre éclairé
    Inscrit en
    Mars 2006
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 72
    Par défaut
    pour convertir un chiffre en lettre

    où i est le chiffre bien entendu

    une fois que tu as ta lettre et bien c'est tout de suite moins compliqué


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Columns("BS:BT").Select
    columns("" & lettre & ":" & lettre2 ).select

  3. #3
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    je pense pas que ça marchera, justement parce que c'est BS (par exemple)
    SI je fais un chr(96 +i) par exemple, avec i = 72, ça va me faire 188 ça va pas me faire une erreur ?
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    par exemple utilise union ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Union(Columns(71), Columns(72)).Select

  5. #5
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim rRange
    Set rRange = Range(Columns(3), Columns(4))
    Te permet d'utiliser rRange partout où tu veux invoquer tes 2 colonnes.

    Example:
    Dans ce cas-ci, j'ai mis les colonnes 3 et 4 pour ne pas devoir dérouler toutes ma feuille pour voir ce qui était sélectionné.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  6. #6
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Citation Envoyé par AlainTech
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim rRange
    Set rRange = Range(Columns(3), Columns(4))
    Te permet d'utiliser rRange partout où tu veux invoquer tes 2 colonnes.

    Example:
    Dans ce cas-ci, j'ai mis les colonnes 3 et 4 pour ne pas devoir dérouler toutes ma feuille pour voir ce qui était sélectionné.
    Yep Merci ça marche nickel merci beaucoup
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  7. #7
    Membre averti
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Novembre 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2017
    Messages : 16
    Par défaut
    Bonjour,
    Je me permets de compléter la question même si ce n'est pas mon sujet, mais à mon niveau je voudrais sélectionner plusieurs lignes comprises entre 2 variables.

    donc a défaut je remplace par Line, mais je ne peux pas utiliser les ":" pour préciser que je veux l'ensemble compris entre les deux lignes
    Merci d'avance

  8. #8
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,
    si tu veut absolument des lettres...A..Z = 26
    int (72 / 26) = 2 --->"A" = chr(65) --> chr(64 + 1) = 65 --> chr(64 + 2) = 66 = "B"

    le reste 72 - (2*26) = 20 =? = ---> "T" --> chr(64 + 20)

    72 = BT

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  9. #9
    Membre averti
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Novembre 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2017
    Messages : 16
    Par défaut
    J'ai pas tout compris, je ne penses pas que tu réponds à ma question mais à la précédente

    en effet la fonction ci dessous sélectionne les colonnes,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Union(Columns(71), Columns(72)).Select


    donc je m'en suis inspiré et mis le code ci-dessous ligne1 étant ma variable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Union(Rows(6), Rows(ligne1)).Select
    cependant cela ne me sélectionne pas les lignes intermédiaires (entre la 6ème et la dernière correspondant à ma variable

    J'ai bien la possibilité de faire une boucle afin de supprimer l'ensemble des lignes, mais je me dit qu'il y a certainement un code qui m'évite de faire une boucle et de sélectionner directement l'ensemble des lignes pour les supprimer en 1 fois.

  10. #10
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour

    La méthode Union sert à constituer une plage de cellules non contigües. Ce qui n'est pas ce que tu veux ...
    Regarde ce que fait (exemple) ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Rows(5), Rows(10)).Select

  11. #11
    Membre averti
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Novembre 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2017
    Messages : 16
    Par défaut
    Super, merci unparia

    Maintenant que je vois ce code je me dit que c'est évident je vais pouvoir finir ma macro

    MERCI !!!

  12. #12
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    divers exemples

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'exemple selectionner les colonnes  I et K
    'on connait les index  des colonnes 9 et 11
    Sub test1()
    'par range(cells....)avec index
        Range(Cells(1, 9), Cells(1, 11)).EntireColumn.Select
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    'on connait les lettres des colonnes  "I" et "k"
    Sub test2()
        ' par range (cells...)avec lettre
        Range(Cells(1, "i"), Cells(1, "k")).EntireColumn.Select
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub test3()
        'formule classique
        'tout ce qui est entre la cellule 1 colonne 1 et next cellule  colonne2 est pris en compte
        Columns("i:k").Select
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub test4()
    'avec range et lettre double
    'ici seulement les colonnes I et K sont selectionnées
    Range("I:I,K:K").Select
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    'exemple  selectionner les lignes de 5 a 10
    Sub test5()
        'par rows et les index
        Rows("5:10").Select
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub test6()
      ' par range(cells((...) et entirerow
        Range(Cells(5, 1), Cells(10, 1)).EntireRow.Select
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub test7()
      ' par range row(index deligne)
        Range(Rows(5), Rows(10)).Select
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    'selectionner uniquement les lignes 5 et 10 pas ce qu'il y a entre les deux
    Sub test8()
    'avec range et index de lignes en double
     Range("5:5,10:10").Select
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  13. #13
    Membre averti
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Novembre 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2017
    Messages : 16
    Par défaut
    Merci pour ce complément qui me sera certainement utile pour de prochains développements

Discussions similaires

  1. Sélection de plusieurs colonnes dans un graphique
    Par jpvba65 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 10/05/2014, 19h02
  2. [PPT-2007] Sélection de plusieurs colonnes non adjacentes
    Par alers dans le forum Powerpoint
    Réponses: 0
    Dernier message: 29/03/2013, 13h39
  3. Sélection de plusieurs colonnes dans un IN
    Par Sankasssss dans le forum Langage SQL
    Réponses: 10
    Dernier message: 17/06/2010, 12h44
  4. [VBA-E] Masquage de plusieurs colonnes par interface
    Par tuta77 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 24/01/2007, 10h10
  5. [VBA-E] Recherche sur plusieurs colonnes ?
    Par Kokito dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 14/11/2006, 14h27

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