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 :

Selectionner une cellule


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2008
    Messages
    629
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 629
    Par défaut Selectionner une cellule
    Bonsoir

    A l'aide d'un formulaire j'ai une combobox avec une liste de nom et lorsque je sélectionne un nom dans la liste sa met le fond de la cellule sélectionner en rouge, la police en gras, italique et en taille 16.

    Mon problème et que lorsque je sort de la cellule pour aller dans une autre cellule ma première cellule ne revient pas comme a l’origine.

    Je joint mon code puisque on ma enlever le fichier!
    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
    Private Sub ComboBox1_Change()
    'Cette partie sert a selectionner la ligne de la Feuille
    'Sheets("Race").Cells(ComboBox1.ListIndex + 2, 1).Select
    With Sheets("Race")
     
     
        .Range("A2:A1000").Interior.ColorIndex = xlNone
        .Cells(ComboBox1.ListIndex + 1, 1).Interior.ColorIndex = 3
        .Cells(ComboBox1.ListIndex + 1, 1).Font.Bold = True
        .Cells(ComboBox1.ListIndex + 1, 1).Font.Italic = True
        .Cells(ComboBox1.ListIndex + 1, 1).Font.Size = 16
    End With
    End Sub
     
    Private Sub CommandButton1_Click()
     
    'Code pour vider la couleur des cellules "C" a la fermeture
           Range("A2:A280").Select
        With Selection.Interior
            .Pattern = xlNone
            .TintAndShade = 0
            .PatternTintAndShade = 0
        End With
        Range("A2").Select
    'Stop
    Unload Me
    End Sub

    Je vous remercie de votre aide

    Cordialement

    Max

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Il ne sert à rien de déposer un fichier à télécharger. Seul le code VBA devrait être publié.
    Ce que tu décris, vient sans doute du fait que le code modifie les propriétés de la fonte de la police au moment de la sélection et pas au moment de quitter celle-ci ou lors de la sélection d'un autre élément de la liste.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Il est préférable de travailler avec un variable objet pour définir ta liste, tu y gagneras en efficacité pour la maintenance et de préférence Il faut décomposer ton programme en ayant une procédure qui initialise le format des cellules et une pour mettre en évidence la cellule ou la ligne sélectionnée.
    Plutôt que la procédure événementielle control_Change utilise control_Click (où control représente le contrôle ListBox ou ComboBox

    Pour mon exemple, je travaille avec
    une feuille nommée db dont le nom est défini par une constante de portabilité Module,
    Un Listbox (plutôt qu'un Combobox) nommé lstBox les propriétés étant identiques

    Code à placer en tête du module du UserForm
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Option Explicit
    Dim rng As Range
    Const shtName As String = "db"
    Code pour initialiser la variable objet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub UserForm_Initialize()
     Set rng = ThisWorkbook.Worksheets(shtName).Range("A1").CurrentRegion
     With rng:  Set rng = .Offset(1).Resize(.Rows.Count - 1): End With
     With Me.lstBox
     .ColumnCount = rng.Columns.Count
     .ColumnHeads = True
     .RowSource = rng.Worksheet.Name & "!" & rng.Address
     .ListIndex = 2 ' Donne le focus au 3ème éléments de la liste
     End With
    End Sub
    [B]Code de la procédure qui initialise le format des cellules (nommée InitFormat)/B]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub InitFormat()
     With rng.Resize(, 1)
      With .Interior: .Pattern = xlNone: .ColorIndex = 0: End With
      With .Font: .Bold = False: .Italic = False: .Size = 10: End With
     End With
    End Sub
    Code de la procédure qui formate la cellule sélectionnée dans le ListBox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub FormatCell()
     ' Met en forme la cellule de la ligne sélectionnée
     With rng
      InitFormat
     .Cells(lstBox.ListIndex + 1, 1).Interior.ColorIndex = 3
     .Cells(lstBox.ListIndex + 1, 1).Font.Bold = True
     .Cells(lstBox.ListIndex + 1, 1).Font.Italic = True
     .Cells(lstBox.ListIndex + 1, 1).Font.Size = 16
     End With
    End Sub
    Code de la procédure événementielle lstBox_Click
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub lstBox_Click()
     monResultat = Me.lstBox.Text
     FormatCell
     lstBox.ListIndex = -1
    End Sub
    Code de la procédure événementielle CommandButton1_Click
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub CommandButton1_Click()
     InitFormat
     Unload Me
    End Sub
    Pour résumer :
    Lorsque l'on sélectionne un élément dans le ListBox, la procédure événementielle appelle une procédure (nommée FormatCell) qui initialise l'ensemble des formules (en appelant la procédure InitFormat) avant de mettre en forme la cellule de la ligne sélectionnée.
    En quittant le UserForm par un click sur le CommandButton1 on appelle la procédure InitFormat).
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  4. #4
    Membre éclairé
    Inscrit en
    Septembre 2008
    Messages
    629
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 629
    Par défaut
    Bonjour Philippe Tulliez,

    Très beau travail et très belle explications félicitation et merci beaucoup

    Juste une petite modif dans ma feuille initial il y a une MFC donc le code est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =ET(MOD(LIGNE();2)=0;A2<>"")
    La couleur est induite par cette mise en forme conditionnelle.
    Cette couleur étant "prioritaire" par rapport à la couleur rouge de remplissage,
    Je ne voudrai pas supprimer cette MCF.

    Et peut-on se rendre à la ligne ou la cellule est sélectionner, je m'explique, si je click à la ligne 358 que la ligne soit visible a l’écran sans descendre vers la ligne?

    Peut on y remédier?

    Merci et bonne journée

    Max

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Très beau travail et très belle explications félicitation et merci beaucoup
    Et bien si tu es satisfait et heureux de l'explication, n'hésite pas à voter , c'est la seule rétribution des bénévoles qui répondent ici et aussi un encouragement à continuer.

    Pour revenir à ta dernière question, je ne sais pas si j'ai compris la question.
    La mise en forme conditionnelle étant prioritaire par rapport au format de base, tu pourrais utiliser comme format de sélection un encadrement de ligne ou de cellule et/ou tenter d'utiliser des propriétés différentes de mise en forme.
    Par exemple une couleur de cellule pour la sélection et une couleur de police pour la MFC.
    Seule ton imagination peut t'aider.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. [OpenOffice][Tableur] Comment selectionner une cellule
    Par Patbart dans le forum OpenOffice & LibreOffice
    Réponses: 1
    Dernier message: 16/10/2009, 13h56
  2. [Débutant] selectionné une cellule d'un tableau par programme
    Par ammino222002 dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 06/10/2009, 07h58
  3. selectionner une cellule dans un stringGrid
    Par zanzie dans le forum Débuter
    Réponses: 4
    Dernier message: 07/04/2009, 21h27
  4. Comment lancer une macro excel en selectionnant une cellule?
    Par itony dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 04/03/2008, 10h08
  5. Réponses: 3
    Dernier message: 06/06/2006, 17h38

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