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 :

Sélection de plusieurs parties de colonnes


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 85
    Points : 96
    Points
    96
    Par défaut Sélection de plusieurs parties de colonnes
    Bonjour à tous,

    Je viens vous poser une petite question technique résultant à une adaptation de l'enregistreur de macro mais qui ne fonctionne pas.

    Le but ici est de copier plusieurs parties de colonnes simultanément (avec le controle enfoncé car les colonnes ne se touchent pas) et de faire le collage dans une autre feuille.

    L'enregistreur de macro m'avait donné ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Range("B1:B16,L1:L16,AF1:AF16,V1:V16").Select
        Range("V1").Activate
        Selection.Copy
        Sheets("Feuil8").Select
        ActiveSheet.Paste
    Et j'ai misérablement essayé de l'adapté avec des "range(cells(),cells():cells(),cells()" mais ça ne marche pas. (La méthode de l'objet range gnagnagna ... !)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    For i = 1 To nb_param_ttx
                Sheets("Feuil7").Select
                str_cell = ""
                    For j = 1 To 16 - 1
                        str_cell = str_cell & "Cells(1," & i + (j - 1) * nb_param_ttx + 1 & "): Cells(" & nb_paliers_reel + nb_line_blanc & "," & i + (j - 1) * nb_param_ttx + 1 & "),"
                    Next j
                    str_cell = str_cell & "Cells(1," & i + 15 * nb_param_ttx + 1 & "): Cells(" & nb_paliers_reel + nb_line_blanc & "," & i + 15 * nb_param_ttx + 1 & ")"
                    last_cell = "Cells(1," & i + 15 * nb_param_ttx + 1 & ")"
                    MsgBox (str_cell)
                    Range(str_cell).Select
                    Range(last_cell).Activate
                    Selection.Copy
                    Sheets("Feuil8").Select
                    ActiveSheet.Paste
                Next i
    Et pourtant dans le msgbox je vois bien que la syntaxe est identique à celle de l'enregistreur de macro seulement avec des cells ! Peut être ne faut-il ne pas faire comme ça ?

    Si quelqu'un a une idée,

    Cordialement

    Edit: Pour info : bug sur le premier range !

  2. #2
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    bonjour,
    je crois que vba ne fait pas de copier/coller en sélection multiple.
    donc tu pourrais utiliser la fonction UNION pour regrouper tes diverses sélection et tu pourrais ensuite utiliser un boucle pour parcourir chaque cellule de la selection pour ensuite la coller ou tu veux.

    un exemple:
    dans le code si dessous je regroupe deux plages de cellules par la méthode UNION dans une variable, "montab".

    ensuite je parcours chaque cellule de la selection ("montab") et les copies à la suite dans le colonne A de la feuille 2.
    voilà une piste:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub test()
    Dim montab As Range
    With Sheets("Feuil1")
    'je regroupe mes ranges
    Set montab = Union(.Range("A1:C3"), .Range("B10:G20"))
     
    i = 1
    'je parcours chaque cellule de ma selection multiple
    For Each c In montab
    'je colle chaque cellule en feuille 2 colonne A
    c.Copy Sheets("Feuil2").Cells(i, 1)
    i = i + 1
    Next c
    End With
    End Sub
    comme ton titre c'est sélection de plusieurs parties de colonnes dans mon exemple si tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    With Sheets("Feuil1")
    'je regroupe mes ranges
    Set montab = Union(.Range("A1:C3"), .Range("B10:G20"))
     
    montab.select 'selectionne mes deux plages
    End With
    il sélectionnera tes deux plages.
    @+

    Si vous avez trouvé la solution à votre problème n'oubliez pas d'appuyer sur
    Et n'oubliez pas de voter en appuyant sur si ce message a repondu à vos attentes.
    Ou sur si ce n'est pas le cas

  3. #3
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Edit: Pour info : bug sur le premier range !
    si tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    range(cells(1,2):cells(1,3)).select
    cela provoque une erreur. Par contre ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Cells(1, 2), Cells(1, 3)).Select
    fonctionne. donc dans ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    str_cell = str_cell & "Cells(1," & i + (j - 1) * nb_param_ttx + 1 & "): Cells(" & nb_paliers_reel + nb_line_blanc & "," & i + (j - 1) * nb_param_ttx + 1 & "),"
    remplace les ":" ,souligné en rouge, par ",".

    mais cela ne suffiras pas, je pense à règler ton problème.
    La syntaxe pour faire ce que tu souhaites avec des cells ne me paraît pas du tout appropriée.
    image que je veuille sélectionner la cellule B1, et aussi les cellules "A3:C3".
    si je fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Cells(1, 2), Range(Cells(3, 1), Cells(3, 3))).Select
    résultat: il me sélectionne en fait toutes la plage:A1:C3

    maintenant si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set maplage = Union(Cells(1, 2), Range(Cells(3, 1), Cells(3, 3)))
    maplage.Select
    résultat : j'ai bien une sélection multiple B1 et A3:C3
    je pense qu'il te faut revoir ta façon de t'y prendre.

    EDIT: pour confirmer ce que je t'ai dit: le code de l'enregistreur de macro l'as-tu essayé?
    Si non, essaie le.
    @+

    Si vous avez trouvé la solution à votre problème n'oubliez pas d'appuyer sur
    Et n'oubliez pas de voter en appuyant sur si ce message a repondu à vos attentes.
    Ou sur si ce n'est pas le cas

Discussions similaires

  1. [VBA-E]Sélection de plusieurs colonnes
    Par illight dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 27/11/2017, 23h19
  2. 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, 18h02
  3. [PPT-2007] Sélection de plusieurs colonnes non adjacentes
    Par alers dans le forum Powerpoint
    Réponses: 0
    Dernier message: 29/03/2013, 12h39
  4. Sélection de plusieurs colonnes dans un IN
    Par Sankasssss dans le forum Langage SQL
    Réponses: 10
    Dernier message: 17/06/2010, 11h44
  5. [SQL] Sélection ds plusieurs table
    Par lord_paco dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/07/2003, 17h53

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