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 :

Affichage informations en fonction de la cellule sélectionnée [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 59
    Par défaut Affichage informations en fonction de la cellule sélectionnée
    Bonjour à tous,

    Je suis bloqué sur un problème un peu corsé pour mon niveau.
    J'ai mis un fichier en pièce jointe : exemple.xls

    La Feuil1 donne un nombre d'intervention en fonction d'un libellé d'intervention.
    J'aimerais lorsque l'on clique sur le nombre d'intervention (1 ou 2 par exemple) qu'un message d'information affiche le détail de l'intervention. Ce détail se trouve en Feuil2 comme par exemple "Vérif pneu" et/ou bien "Visite peinture".

    Je ne sais pas si il vaut mieux faire ca dans un commentaire attribué à une cellule ou bien un msgBox. Et je ne sais pas du tout non plus comment programmer ca en VBA... Je m'en remets donc à vous pour avoir un coup de pouce !

    Auriez-vous des idées ?
    Ou bien connaissez-vous des sujets similaires qui pourraient m'aider ?

    Merci d'avance !

  2. #2
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 69
    Par défaut
    Bonjour je vous propose de mettre une info-bulle qui apparaitra quand on clic sur une des cellules de la colonne A :
    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
    Option Explicit
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If Target.Column <> 1 Then Exit Sub
        Dim Cible As String, l As Long
     
        'Supprime la validation existante
        Target.Validation.Delete
     
        For l = 2 To Sheets("Feuil2").Range("A" & Rows.Count).End(xlUp).Row
            If Sheets("Feuil2").Range("A" & l) = Target Then Cible = Cible & Sheets("Feuil2").Range("B" & l) & vbNewLine
        Next l
     
        'création validation et info-bulle
        With Target.Validation
            .Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, Operator:=xlBetween
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputMessage = Cible
            .ShowInput = True
            .ShowError = True
        End With
    End Sub
    La macro est à mettre dans le code de la feuille 1.

  3. #3
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Perso, j'avais préparé ce code à mettre dans l'évènement "Activate" de Feuil1
    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
    Private Sub Worksheet_Activate()
    Dim DerCel As Range, PlF2 As Range, CelF2 As Range
    Dim PlF1 As Range, CelF1 As Range, nom(), x As Long
    With Sheets("Feuil2")
      Set DerCel = .Range("A" & .Rows.Count).End(xlUp)
      Set PlF2 = .Range("B2", DerCel(1, 2))
    End With
    With Sheets("Feuil1")
      Set DerCel = .Range("A" & .Rows.Count).End(xlUp)
      Set PlF1 = .Range("B2", DerCel(1, 3))
      For Each CelF1 In PlF1
        CelF1.ClearComments
        If CelF1 > 0 Then
          x = 0
          For Each CelF2 In PlF2
            If CelF2(1, 0) = .Range("A" & CelF1.Row) Then
              ReDim Preserve nom(x + 1)
              nom(x) = CelF2
              x = x + 1
            End If
          Next CelF2
          CelF1.AddComment
          If x > 0 Then
            For x = 0 To UBound(nom)
              CelF1.Comment.Text Text:=CelF1.Comment.Text & Chr(10) & nom(x)
            Next x
            CelF1.Comment.Visible = False
          Else
            CelF1.ClearComments
          End If
        End If
      Next CelF1
    End With
    End Sub
    Donc au choix

    Bonne continuation à tous les deux
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 59
    Par défaut
    Parfait, merci beaucoup !

    Par contre l'idéal serait de combiner les deux code :
    - pour l'utilisation je trouve que l'info bulle est plus pratique
    - par contre, l'info bulle devrait se trouver sur les equipes. En sachant que par exemple sur une visite 4 on peut avoir l'équipe 1 et l'équipe 2 concerné à la fois.

    J'essaye de combiner les deux codes mais ce n'est pas une mince affaire pour mon niveau en VBA...

    Bonne soirée !

  5. #5
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    En reprenant le code à letudiant68
    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
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim Cible As String, l As Long, ref As String
    If Target.Column = 2 Or Target.Column = 3 Then
      Target.Validation.Delete
      If Target <> 0 Then
        ref = Range("A" & Target.Row) & Cells(1, Target.Column)
        With Sheets("Feuil2")
          For l = 2 To .Range("A" & .Rows.Count).End(xlUp).Row
            If .Range("A" & l) & .Range("C" & l) = ref Then
              Cible = Cible & .Range("B" & l) & vbNewLine
            End If
          Next l
        End With
      End If
        'création validation et info-bulle
        With Target.Validation
            .Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, Operator:=xlBetween
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputMessage = Cible
            .ShowInput = True
            .ShowError = True
        End With
    End If
     
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 59
    Par défaut
    J'étais pas loin !
    Merci beaucoup d'avoir pris le temps, c'est vraiment sympa !
    Merci à vous.

    Topic résolu

    Bonne soirée !

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 20/06/2012, 14h39
  2. Réponses: 4
    Dernier message: 24/07/2005, 20h14
  3. Réponses: 3
    Dernier message: 18/06/2005, 00h31
  4. affichage forme en fonction de la resolution de l'ecran
    Par shiners300 dans le forum C++Builder
    Réponses: 1
    Dernier message: 24/11/2004, 14h33
  5. affichage dynamique en fonction des données en base
    Par jengo dans le forum Bases de données
    Réponses: 1
    Dernier message: 28/10/2004, 10h22

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