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 d'une zone sur deux lignes [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mai 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mai 2017
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Sélection d'une zone sur deux lignes
    Bonjour,

    Je galère, comme beaucoup ici ;o), pour appliquer quelque chose sur une zone définie (B à H) en sélectionnant cette zone sur deux lignes.

    J'ai donc un zoli code qui fait son office mais uniquement sur la dernière zone... sur les "zones précédentes", il applique ce que je lui demande sur une seule ligne... pas sur deux...

    Voici le 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Sub SélectionLignes()
     
     
    Dim Plage1 As Range
    Dim lg As Long
    lg = Range("B" & Rows.Count).End(xlUp).Row + 1
    lignemin = 3
    lignemax = 12 'lg 
     
    'lignemin et lignemax servent uniquement à tester le script sur une zone définie et évite de remplir tout le fichier
     
    For i = lignemin To lignemax:
     
                                Set Plage1 = Range("B" & i & ":H" & i)
                                Set Plage2 = Range("B" & i + 1 & ":H" & i + 1)
                                Set maSelection = Application.Union(Plage1, Plage2)
                                maSelection.Select
     
                Selection.Borders(xlDiagonalDown).LineStyle = xlNone
        Selection.Borders(xlDiagonalUp).LineStyle = xlNone
        With Selection.Borders(xlEdgeLeft)
            .LineStyle = xlContinuous
            .ThemeColor = 5
            .TintAndShade = 0
            .Weight = xlMedium
        End With
     
     
    Next i
     
    End Sub

    Help me if you pleased...

  2. #2
    Expert éminent sénior
    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
    Points : 18 677
    Points
    18 677
    Par défaut
    Bonjour !

    conformément aux règles de ce forum !

    En profiter au passage pour présenter clairement le besoin, la difficulté technique rencontrée …

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Stockholm, London, Istanbul, Berlin, Nice, Bruxelles, Charlie, …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mai 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mai 2017
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Sorry pour la balise CODE.

    Très bien donc je reprends :

    La demande : Je dois avoir un problème dans la syntaxe de ma code puisque mon code ne fait pas ce que je souhaiterais qu'il fasse... càd sélectionner 1 zone comprenant les colonnes de B à H sur 2 lignes. Puis un next...

    Le problème rencontré : Le code fait son office mais uniquement sur la dernière zone... sur les "zones précédentes", il applique ce que je lui demande sur une seule ligne... pas sur deux...

    Je peux le faire autrement. Le code ne produit son effet réel (donc appliquez un style sur deux lignes), uniquement sur la dernière ligne ou la première en fonction de ce qu'on lui demande de faire...


    Je vous invite pour tester mon code à changer la partie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ]Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
    .LineStyle = xlContinuous
    .ThemeColor = 5
    .TintAndShade = 0
    .Weight = xlMedium
    End With
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
     With Selection.Borders(xlEdgeBottom)
            .LineStyle = xlDouble
            .ThemeColor = 5
            .TintAndShade = 0
            .Weight = xlThick
        End With
    Le rendu est plus explicite ;o) !

    Merci.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mai 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mai 2017
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    C'est fou comme la fierté et l'orgueil chez un humain agit sur son comportement.

    Il suffit quelque fois de dire que l'on est pas capable de trouver quelque chose et de se référer à des gens capables de nous aider pour que finalement... la solution vienne.

    Merci de votre aide, j'ai donc trouvé :

    Il suffit que j'intègre un i=i+1 après mon for et je fais démarrer mon script une ligne plus haute.

    Du coup, tout fonctionne

    Rendu final

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    Sub SélectionLignes()
     
     
    Dim Plage1 As Range
    Dim Plage2 As Range
    Dim lg As Long
    lg = Range("B" & Rows.Count).End(xlUp).Row + 1
    lignemin = 2
    lignemax = 12 'lg
     
    For i = lignemin To lignemax:
    i = i + 1
     
                            'If Range("L" & i).Value = "" Then
                            'If Plage1 Is True Then
                                Set Plage1 = Range("B" & i & ":H" & i)
                                Set Plage2 = Range("B" & i + 1 & ":H" & i + 1)
                                Set maSelection = Application.Union(Plage1, Plage2)
                                maSelection.Select
     
                      Selection.Borders(xlDiagonalDown).LineStyle = xlNone
        Selection.Borders(xlDiagonalUp).LineStyle = xlNone
        With Selection.Borders(xlEdgeLeft)
            .LineStyle = xlContinuous
            .ThemeColor = 5
            .TintAndShade = 0
            .Weight = xlMedium
        End With
        With Selection.Borders(xlEdgeTop)
            .LineStyle = xlDouble
            .ThemeColor = 5
            .TintAndShade = 0
            .Weight = xlThick
        End With
        With Selection.Borders(xlEdgeBottom)
            .LineStyle = xlDouble
            .ThemeColor = 5
            .TintAndShade = 0
            .Weight = xlThick
        End With
        With Selection.Borders(xlEdgeRight)
            .LineStyle = xlContinuous
            .ThemeColor = 5
            .TintAndShade = 0
            .Weight = xlMedium
        End With
        Selection.Borders(xlInsideVertical).LineStyle = xlNone
        Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
     
    Next i
     
     
    End Sub

  5. #5
    Expert éminent sénior
    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
    Points : 18 677
    Points
    18 677
    Par défaut




    Ou comme indiqué dans l'aide VBA de For utiliser son paramètre Step
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

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

Discussions similaires

  1. affichage d'une résultat sur deux lignes
    Par nabil123456 dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 17/04/2015, 11h32
  2. Comment faire une condition sur deux lignes différentes ?
    Par sogelinas dans le forum SAS Base
    Réponses: 4
    Dernier message: 08/10/2014, 03h33
  3. [Raphael JS] Sélection d'une zone sur une carte
    Par Oluha dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 05/11/2012, 16h47
  4. [XSL:FO] fusionner une cellule sur deux lignes.
    Par Luc Hermitte dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 03/07/2008, 11h33
  5. Texte de la barre de titre d'une Jframe sur deux lignes
    Par radzar dans le forum Agents de placement/Fenêtres
    Réponses: 17
    Dernier message: 01/09/2007, 01h10

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