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 et construction Range avec union


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Billets dans le blog
    17
    Par défaut Selection et construction Range avec union
    Bonjour,

    Je cherche une methode, pour construire un range avec une condition:

    On a une feuille, avec des lignes de données, on souhaite selectionner que certaines lignes selon une condition.
    Exemple : on parcours la premiere colonne , si la valeur = x ou si la valeur = J alors je l'ajoute a un range que j'ai créé.
    En fait avec un union j'aimerais construire un range avec les lignes que je veux.

    J'ai réussi à le faire enselectionnant tt et en supprimant les lignes differente de ma condition, mais je voudrais vraiment savoir faire un range avec application.union avec une condition sur la ligne

    ps : ma ligne est un range de 32 colonnes , ca n'est pas dynamique
    Merci d'avance

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour,

    je me demande d'où vient cette mode de parcourir (donc boucle) alors que c'est plus efficace en filtrant les cellules !

    Mais bon, voici un exemple d'Union des lignes impaires :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Demo()
        Dim Rg As Range, Rw As Range
     
        With Feuil1.Cells(1).CurrentRegion
            Set Rg = .Rows(1)
     
            For Each Rw In .Rows
                  If Rw.Row Mod 2 Then Set Rg = Union(Rg, Rw)
            Next
        End With
     
        Debug.Print Rg.Address
        Set Rg = Nothing
    End Sub
    _____________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

    _____________________________________________________________________________________________________
    Je suis Charlie - Je suis Bardo

  3. #3
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Billets dans le blog
    17
    Par défaut merci
    Je te remercie, c'est exactement la syntaxe que je recherchais , merci

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    quels types de conditions ? cette plage est destinée à quoi ?

    un exemple amusant sans boucle et sans union
    la plage est simplement copiée pour illustrer
    c'est paramétrable facilement

    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
    20
    21
    22
    Sub SansBoucleNiUnion()
    Dim Critere As String
    Dim ColCritere As Long
    Dim Nbcolonnes As Long
    Critere = "toto"
    Nbcolonnes = 32
    ColCritere = 1
     
    Application.ScreenUpdating = False
    With Feuil1
        .AutoFilterMode = False
        With .Cells(2, Nbcolonnes + 1).Resize(.UsedRange.Rows.Count - 1, 1)
            .FormulaR1C1 = "=IF(R[0]C[-" & Nbcolonnes + 1 - ColCritere & "]=""" & Critere & """,1,0)"
                  .Value = .Value
        End With
        .Cells(1, 1).AutoFilter Nbcolonnes + 1, 1
        .AutoFilter.Range.Copy Feuil2.[A1]
        .AutoFilterMode = False
        .Columns(Nbcolonnes + 1).Delete
    End With
    Application.ScreenUpdating = True
    End Sub

    EDIT : arf ! encore coiffé au poteau, Marc a soulevé les cellules filtrées avant que je poste

  5. #5
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Billets dans le blog
    17
    Par défaut
    Merci Joe, plusieurs questions: [A1] c'est une cellule?
    peux tu juste me donner quelques explications sur ton code et son fonctionnement ca m'interresse bcp

  6. #6
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    [A1] remplace Range("A1") ou Cells(1,1)

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Sub SansBoucleNiUnion()
    Dim Critere As String
    Dim ColCritere As Long
    Dim Nbcolonnes As Long
    Critere = "toto"
    Nbcolonnes = 32
    ColCritere = 1
     
    Application.ScreenUpdating = False
    With Feuil1
        .AutoFilterMode = False
        ' colonne à côté de tes données (33 dans ton cas)
        With .Cells(2, Nbcolonnes + 1).Resize(.UsedRange.Rows.Count - 1, 1)
            ' formule pour marquer les lignes qui contiennent ton critère avec le chiffre 1
            .FormulaR1C1 = "=IF(R[0]C[-" & Nbcolonnes + 1 - ColCritere & "]=""" & Critere & """,1,0)"
                  ' remplacement de formules par les valeurs
                  .Value = .Value
        End With
        ' filtre sur les résultats (colonne 33 = chiffre 1)
        .Cells(1, 1).AutoFilter Nbcolonnes + 1, 1
        ' copie de la plage filtrée
        .AutoFilter.Range.Copy Feuil2.[A1]
        .AutoFilterMode = False
        ' suppression de la colonne de repérage
        .Columns(Nbcolonnes + 1).Delete
    End With
    Application.ScreenUpdating = True
    End Sub

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

Discussions similaires

  1. [XL-2007] Selection d'un Range avec colonnes de tailles différentes
    Par YanBos dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 09/01/2014, 10h08
  2. Réponses: 3
    Dernier message: 20/04/2011, 16h35
  3. [VBA-E] selection de plusieurs rangés avec des cellules définies
    Par noir_desir dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 24/02/2007, 14h26
  4. [MySQL] Construction de requête avec UNION
    Par kunchovich dans le forum Langage SQL
    Réponses: 5
    Dernier message: 27/07/2006, 19h40
  5. Combiner un Select et un Update avec une close Union ?
    Par Cygnus Saint dans le forum Langage SQL
    Réponses: 6
    Dernier message: 14/03/2006, 18h48

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