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 :

[E-07] PB avec Selection


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de perchman
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    199
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 199
    Par défaut [E-07] PB avec Selection
    bonjour,

    je souhaite colorier la diagonale d'une plage sélectionnée sous Excel dans le cas où cette plage est carrée mais je rencontre un problème quand je cherche à récupérer les coordonnées de la case en haut à gauche de la selection...

    la fonction est_carree fonctionne très bien..

    Pourriez-vous m'aider s'il vous plait !??

    Merci à tous

    Voici mon 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
    32
    33
    34
     
    Function est_carree(plage As Range) As Boolean
        Dim nbcol As Integer
        Dim nblig As Integer
        nbcol = plage.Columns.Count
        nblig = plage.Rows.Count
        est_carree = (nbcol = nblig)
    End Function
     
    Sub diago_perso()
        Dim i As Integer
        Dim j As Integer
        Dim nbcol As Integer
        Dim haut As Integer
        Dim gauche As Integer
        Dim kase As Range
        nbcol = Selection.Rows.Count
        MsgBox ("nbcol: " & nbcol)
        kase = Selection.End(xlTop).End(xlToLeft).Select
        haut = kase.Row
        MsgBox ("haut: " & haut)
        gauche = Selection.End(xlToLeft)
        If (est_carree(Selection) = True) Then
            For i = gauche To nbcol
                For j = haut To nbcol
                    Range(Cells(i, j)).Interior.ColorIndex = 3
                    j = j + nbcol
                Next j
                i = i + nbcol
            Next i
        Else
            MsgBox ("La sélection n'est pas carrée")
        End If
    End Sub

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Par défaut
    Bonjour,

    il me semble que la 1ere cellule d'une plage est la cellule en haut a gauche de la plage.

    Ainsi as-tu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set CelluleEnHautAGauche = Selection.Cells(1)
    De même pour avoir la dernière cellule, qui est celle en bas à droite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set CelluleEnBasADroite = Selection.Cells(Selection.Cells.Count)
    Et attention, à compter le nombre de régions si l'utilisateur fait une sélection multiple de plages :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Selection.Areas.Count

  3. #3
    Membre confirmé Avatar de perchman
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    199
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 199
    Par défaut
    Voilà la solution !!

    Merci Dadavvvyyy

    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 diago_perso()
        Dim i As Integer
        Dim j As Integer
        Dim nbcol As Integer
     
        nbcol = Selection.Rows.Count
     
        If (est_carree(Selection) = True) Then
            For i = 0 To (nbcol - 1)
                    Cells(Selection.Cells(1).Row + i, Selection.Cells(1).Column + i).Interior.ColorIndex = 3
            Next i
        Else
            MsgBox ("La sélection n'est pas carrée")
        End If
    End Sub

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

Discussions similaires

  1. pb avec select sur deux champs
    Par graphicsxp dans le forum Langage SQL
    Réponses: 7
    Dernier message: 22/03/2005, 15h30
  2. Probleme avec Select Case
    Par GeffD dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 07/03/2005, 15h28
  3. Insert avec select
    Par Alexandre` dans le forum Langage SQL
    Réponses: 11
    Dernier message: 25/01/2005, 15h16
  4. Problème avec select top
    Par franculo_caoulene dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 10/12/2004, 14h55
  5. utilisation de fetch avec select
    Par arwen dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 06/06/2003, 10h03

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