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 plage discontinue


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Sélection plage discontinue
    Bonjour,

    Je recherche un script pour une sélection de plage discontinue par pas de 7 sur les colonne de J à P jusqu'à la première ligne vide d'un tableau (pour une récup. de données dans une Gestion de quatorzaine)

    J'ai bien trouvé dans ce forum, provenant de IGLOOBEL, un début mais l'adapter avec une boucle jusqu'a la fin, c'est pas mon fort.

    Merci d'avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub selection_variable()
        Dim Lign, Xfois, NbLign As Long
        Dim Plage As String
     
        Lign = 1
        Xfois = 7 
        NbLign = Lign + Xfois - 1
        Plage = "J" & Lign & ":M" & NbLign
        Range(Plage).Select
     
    End Sub
    Dernière modification par AlainTech ; 24/06/2015 à 22h11. Motif: Balises [code]

  2. #2
    Membre très actif Avatar de lionel86500
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2013
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 144
    Par défaut
    Bonjour,

    Voici un type de boucle simple

    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
    17
    dim rsortie as integer
    dim rligne as double
     
    ' Initialisation des données
    rsortie = 0
    rligne = 0
    do
          ' A chaque tour plus un dans le compteur de ligne
          rligne = rligne + 1
     
          ' Si le compteur est supérieur à un nombre donné fin de traitement
          if rligne > 1234 then rsortie = 1
     
          if rsortie = 0 then
            ' Actions à effectuer pour chaque tour traité
          end if
    loop until rsortie = 1
    Lionel

  3. #3
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut
    Tu peux tester ce morceau de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub test()
        Dim Rg_Ligne As Range, Rg_Total As Range, n&, i&
            n = ActiveSheet.Cells(Application.Rows.Count, 10).End(xlUp).Row
            Set Rg_Total = ActiveSheet.Range("J1:P1")
            For i = 1 To n Step 7
                Set Rg_Ligne = ActiveSheet.Range("J" & i & ":P" & i)
                Set Rg_Total = Application.Union(Rg_Total, Rg_Ligne)
            Next i
            Rg_Total.Select
    End Sub

  4. #4
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour mimimathy et lionel86500,

    Je recherche un script pour une sélection de plage discontinue par pas de 7 sur les colonne de J à P jusqu'à la première ligne vide d'un tableau ...
    alors tout d'abord pour obtenir la dernière cellule de ton tableau tu peux utiliser ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ActiveCell.End(xlDown).Row
    Petit rappel concernant les plages il existe 2 symbol de séparation :
    - ":" veut dire "JUSQU'A"
    - ";" veut dire "ET ou +"

    exemples :
    "A2:A136" -> de A2 jusqu'à A136 (A3, A4, ...., A135 sont pris en compte)
    "B3;B7" -> B3 et B7 (B4,B5,B6 ne sont pas pris en compte)
    et bien sur on peut combiner
    "C3:C20;E7:E14" -> de C3 à C20 et de E7 à E14


    Peux-tu donner un exemple un peu plus précis des plages que tu souhaites

    A+

    Bon je me suis fait doublé par antonysansh (que je salue au passage ) mais ce serai bien que vous mettiez les codes entre la balises CODE

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour à vous et merci pour le script et les explications (En boucle, c'est pas trop mon fort)

    Le script marche bien (avec une petite modif, car je voulais les 7 premier jours de la quatorzaine sélectionnés sur chaque employés.

    Le soucis, c'est que j'ai plus de 1000 lignes et le copier/coller ne le prend pas en charge (Jusqu'à 400/500 ça passe)

    Je vais donc voir ce que je peux faire en utilisant le filtre de "N° Semaine" pour sélectionner que la N°1 et copier/coller, ou la N°2 et idem.
    Dernière modification par Invité ; 04/06/2015 à 11h18.

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Par défaut
    Bonjour,

    Un petit exemple serait peut-être bien adapté ....

    Ceci étant, il y a une méthode qui marche aussi potentiellement mieux.
    - Vous masquez tout ce que vous ne voulez pas copier
    - Vous récupérez en une passe ce que vous voulez copier (donc qui reste visible), par le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ranges.SpecialCells(xlCellTypeVisible)

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour à tous,

    Grace à vos participations, j'ai réussi à développer ce bout de code. Ca marche, un peu long. Donc si vous voulez vous tracasser les méninges pour trouver une autre solution pour que l'action soit plus rapide....

    En sachant qu'il y a 2*7 lignes par employés (une par semaine) et que les lignes approchent les 1000. Le script est fait pour le transfert de feuille à feuille, mais il devra aller de classeur à classeur.



    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
    17
    18
    19
    Sub test1()
        Dim Rg_Ligne As Range, Rg_Total As Range, n&, i&
            n = ActiveSheet.Cells(Application.Rows.Count, 9).End(xlUp).Row
            Set Rg_Total = ActiveSheet.Range("J4:P4")
            For i = 4 To n Step 14
                Set Rg_Ligne = ActiveSheet.Range("J" & i + 6 & ":P" & i)
                Set Rg_Total = Application.Union(Rg_Total, Rg_Ligne)
            Next i
     
            Rg_Total.Select
     
            For Each Rg_Ligne In Selection
                Rg_Ligne.Copy
                Sheets("Feuil4").Select
                Range(Rg_Ligne.Address).Select
                ActiveSheet.Paste
            Next Rg_Ligne
     
    End Sub

Discussions similaires

  1. Sélection plage variable
    Par Yoooo dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/05/2018, 12h09
  2. Sélection plage de cellule
    Par zorrax dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/10/2008, 17h28
  3. Operations sur plages discontinues
    Par bguichardaz dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 18/09/2008, 14h13
  4. Contrôle excel sélection plage
    Par alexxx69 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 26/03/2007, 13h57
  5. sélection plage de cellule sur Msflexgrid
    Par Charly45 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 22/12/2006, 15h35

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