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 :

selection de colonne spécifique


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 5
    Par défaut selection de colonne spécifique
    salu je voudrait selectionner des colonne spécifique afin de les colé dans une autre feuille

    voila le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sheets("SAISIE").Select
        Range("K8:K500,R8:R500,Y8:Y500,AF8:AF500, AM8:AM500, AT8:AT500, BA8:BA500, BH8:BH500, BO8:BO500, BV8:BV500, CC8:CC500, CJ8:CJ500, CQ8:CQ500, CX8:CX500, DE8:DE500, DL8:DL500, DS8:DS500, DZ8:DZ500, EGE:G500, EN8:EN500, EU8:EU500, FB8:FB500, FI8:FI500, FP8:FP500, FW8:FW500, GD8:GD500, GK8:GK500").Select
     
        Selection.Copy
        Sheets("HORAIRE").Select
        'Range("E8").Select
        'Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        'False, Transpose:=False
    de la feuille saisie je voudrait aller les mettre dans horaire
    quelle ojet mettre dans la syntaxe
    merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Vos colonnes sont incrémentées de 7 en 7.

    Vous pouvez donc utiliser ce code :

    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
    16
    Application.ScreenUpdating = False
     
    numc = 11
    dc = 193
    numcc = 5
    For i = numc To dc Step 7
    Sheets("Saisie").Select
    Range(Cells(8, i), Cells(500, i)).Copy
     
    Sheets("HORAIRE").Select
    Range(Cells(8, numcc), Cells(8, numcc)).Select
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=False
    numcc = numcc + 1
    Next i
    Application.ScreenUpdating = True
    Ici chaque colonne est copiée dans E puis F puis G etc.

    Si vous voulez également respecter l'écart de 7 colonnes pour la copie il faut changer cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    numcc = numcc + 1
     
    en
     
    numcc = numcc + 7

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut chlock, jacques_jean et le forrum
    En me servant de manière éhontée du code de jacques_jean, la même en plus court
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Test()
    Dim X As Integer
    'Application.ScreenUpdating = False
    For X = 0 To 26
    Sheets("Saisie").Range(Cells(8, 11 + (X * 7)), Cells(500, 11 + (X * 7))).Copy
    Sheets("HORAIRE").Cells(8, 5 + X).PasteSpecial Paste:=xlValues
    Next X
    'Application.ScreenUpdating = True
    End Sub
    J'ai mis les ScreenUpDating en commentaire, parce que, pour moi, ils impliquent une gestion des erreurs, pour ne pas se retrouver avec un à False, sans en être averti
    A+

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour Gorfael,

    Pas de problème, je n'avais pas encore "déposé les droits".

    Vous avez raison, je ne sais pas pourquoi j'avais laissé les "Select".

    Il faut juste préciser que si le code se trouve dans un module standard, il est nécessaire que la feuille source ("Saisie") soit la feuille active et donc ajouter éventuellement Sheets("Saisie").Select ?

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut jacques_jean
    Il faut juste préciser que si le code se trouve dans un module standard, il est nécessaire que la feuille source ("Saisie") soit la feuille active et donc ajouter éventuellement Sheets("Saisie").Select ?[/
    Non!
    Par défaut, si la feuille n'est pas précisée, c'est Activesheet qui est prise par défaut (idem pour WorkBook).
    Quand on commence à jongler avec les feuilles, il faut faire très attention à ça, surtout si on utilise With pour s'éviter de l'écriture un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With Sheets("Feuil2")
       range("A1").copy .Range("A2")
    end with
    et différent de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With Sheets("Feuil2")
       .range("A1").copy Range("A2")
    end with
    Dans le premier on copy de la feuille active vers Feuil2 et dans l'autre, c'est l'inverse

    la grande différence entre les odules généraux et les modules de feuille, c'est que dans ces derniers, tu ne peux activer ou sélectionner en dehors de la feuille liée.
    A+

  6. #6
    Invité
    Invité(e)
    Par défaut
    Re,

    Je suis peut-être déjà fatigué, mais je n'ai pas très bien compris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Test()
    Dim X As Integer
    'Application.ScreenUpdating = False
    For X = 0 To 26
    Sheets("Saisie").Range(Cells(8, 11 + (X * 7)), Cells(500, 11 + (X * 7))).Copy
    Sheets("HORAIRE").Cells(8, 5 + X).PasteSpecial Paste:=xlValues
    Next X
    'Application.ScreenUpdating = True
    End Sub
    Avec ce code dans un module standard, si la feuille active au lancement est "HORAIRE" j'ai le message :

    "Erreur d'exécution 1004. Erreur définie par l'application ou par l'objet"

  7. #7
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    Ben oui jacques_jean,... même pb qu'ici
    http://www.developpez.net/forums/sho...91#post3402991

    Pour expliciter teste les 3 codes suivants :
    1)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Test()
    Dim X As Integer
    'Application.ScreenUpdating = False
    For X = 0 To 26
    Sheets("Saisie").Range(Cells(8, 11 + (X * 7)), Cells(500, 11 + (X * 7))).Copy Sheets("HORAIRE").Cells(8, 5 + X) '.PasteSpecial Paste:=xlValues
    Next X
    'Application.ScreenUpdating = True
    End Sub
    c'est OK car on ne passe pas par select.....et on utilise l'argument destination (qui peut-être implicite, la preuve).

    2)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Test2()
    Dim X As Integer
    'Application.ScreenUpdating = False
    For X = 0 To 0
    Sheets("Saisie").Range(Cells(8, 11 + (X * 7)), Cells(500, 11 + (X * 7))).Copy
    Sheets("HORAIRE").Select
    Sheets("HORAIRE").Cells(8, 5 + X).PasteSpecial Paste:=xlValues
    Next X
    'Application.ScreenUpdating = True
    End Sub
    c'est Ok car j'ai réduit la boucle à 1 donc effectivement la feuille sélectionnée est la feuille active par défaut...et on sélectionne la deuxième, puis stop.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Test3()
    Dim X As Integer
    'Application.ScreenUpdating = False
    For X = 0 To 26
    Sheets("Saisie").Select
    Sheets("Saisie").Range(Cells(8, 11 + (X * 7)), Cells(500, 11 + (X * 7))).Copy
    Sheets("HORAIRE").Select
    Sheets("HORAIRE").Cells(8, 5 + X).PasteSpecial Paste:=xlValues
    Next X
    'Application.ScreenUpdating = True
    End Sub
    C'est toujours OK car je remets des select alternatifs....

    c'est marrant car c'est plus explicite que mon truc sur le lien précédent Arf !

    cordialement,

    Didier

Discussions similaires

  1. popup lors selection ligne - mais colonne spécifique ?
    Par chapeau_melon dans le forum WinDev
    Réponses: 4
    Dernier message: 07/04/2008, 11h13
  2. [Requête/SQL]selection toutes colonnes sauf une
    Par alcabk dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 17/04/2007, 09h01
  3. selection de colonne dans une base 9i
    Par ktano dans le forum Administration
    Réponses: 9
    Dernier message: 12/02/2007, 14h54
  4. [VBA-W] selection de colonnes
    Par dede0107 dans le forum VBA Word
    Réponses: 2
    Dernier message: 30/05/2006, 11h48
  5. [Javascript] Select à plusieurs colonne
    Par stailer dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/03/2006, 22h15

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