Excel agrandissement cellule au passage de la souris

Bonjour,

Cela fait un moment que je bidouille plus énormément avec Excel, j'ai encore quelques notions mais ici sa dépasse un peut mes connaissances sur Excel.

En gros je regarde pour faire un agenda d'occupation de personnel pour la prise en charge de personne ayant un handicap.

Donc en fait ce que je voudrai faire ces suivant l'agenda que je visualise en tête (je le préparerai cet aprem et le mettrai sur le forum demain ou se soir en rentrant) c'est par exemple dans ma cellule dans ma cellule d'excel il y soie indiquer le nº de dossier mais quand je passe la souris sur la cellule, j'ai tout le détail de la réservation.

Donc dans un premier temps ce que je voudrai c'est déjà avoir un fichier Excel me permettant que quand je passe la souris sur une cellule j'ai soit la cellule qui s'agrandi (comme un commentaire en gros) et qui me donne le détail et l'indisponibilite de l'agent occuper avec une personne handicapée

Voilà en gros mon objectif, j'essaierai de faire un exemple dans mon fichier que je joindrai à cette discution.

De plus il faudra que le fichier Excel soie compatible avec des versions de 2007 à maintenant, car ce fichier doit être consultable et modifiable par tout le monde car il sera sur le serveur de la société

D'avance je vous remercie

Bonjour,

Comme il n'exista pas de procédure évènementielle "MouseMove" sur une feuille le commentaire agrandi est la bonne solution sinon, il faut passer par quelque chose de plus lourd comme un objet au dessus de la cellule, objet qui lui a une procédure MouseMove. Voici un code qui crée un commentaire attaché à la cellule (ici, pour le test c'est la cellule F16) avec la valeur de celle-ci et agrandi à une fonte de 18 et en gras. Si la cellule est vide le commentaire est supprimé :

Private Sub Worksheet_Change(ByVal Target As Range)

    With Target

        If .Address(0, 0) <> "F16" Then Exit Sub

        If .Value = "" Then .Comment.Delete: Exit Sub

        If .Comment Is Nothing Then .AddComment

        .NoteText CStr(.Value)

        With .Comment.Shape.TextFrame

            .Characters.Font.Bold = True
            .Characters.Font.Size = 18
            .AutoSize = True

        End With

    End With

End Sub

Bonjour,

Merci pour la réponse, mais comment rajoutons ce code via Visual Basic ? Je n'ai jamais travaillé avec VBA donc c'est tout nouveau pour moi

J'ai beau essayez et chercher je n'arrive pas à encoder ne fuse ton code

Enfin voici mon le planning que j'ai réaliser avec un aperçu de ce que je veux faire.

Je vais faire du mieux que je peux pour vous expliquez.

Donc comme dit plus haut c'est un planning d'intervention pour réception de personne handicapée mais avec intervention de différent personnel.

Ce que je souhaite faire c'est :

Dans la cellule B9 (pour exemple ici mais faut que se soie sur l'entièreté du tableau), j'ai le texte

"OM1 G1 2016-12-2025 JOHN SMITH"

"OM2 G1 2016-89-6589 FUTER"

"OM3 G1 2016-13-6951 LOOPING"

Déjà là, je souhaiterai que toutes les phrase OM commence directement l'une en-dessous de l'autre pour que l'on aie le schéma décrit ci-dessus et non ce genre de schéma ci :

OM1 G1 2016-12-2025 JOHN SMITH OM2 G1 2016-89-6589 FUTER OM3 G1 2016-13-6951 LOOPING

Donc la dans un premier temps je ne vois que d'inséré des sauts de lignes ou jouer avec des espaces......

Voilà ça c'est une première chose que je souhaites réaliser.

La deuxième c'est une sorte de commentaire comme présenté sur le fichier, ici j'ai mis un commentaire mais je souhaiterai que quand je rédige mon texte sa se présente comme ceci quand on ouvre le fichier.

OM1 G1 2016-86-9999 BARACUDA et quand je survolerai la cellule j'ai toutes les explications pour la mission à réaliser et aussi par l'agent concerner.

J'espère que c'est réalisable car la je ne sais pas comment m'y prendre je n'ai eu que très peut de programmation en cours car j'étais plus orienté vers hardware.

D'avance je vous remercie

Re,

Pour que tu comprennes mieux ce que tu fais, je ne te retourne pas ton classeur mais je vais te guider. Tout d'abords, voici le code :

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim Tbl
    Dim I As Integer
    Dim Texte As String

    'seulement dans la zone de B4 à B27
    If Intersect(Target, Range("B4:B27")) Is Nothing Then Exit Sub

    With Target

        'si une suppression de plus de deux cellule, fin !
        If .Count > 1 Then Exit Sub

        'si la cellule est vide, suppression du commentaire et fin !
        If .Value = "" Then .Comment.Delete: Exit Sub

        'splite les valeurs de la cellule sur les lettre OM
        Tbl = Split(.Value, "OM")

        'si pas de lettres OM trouvées, message et fin !
        If UBound(Tbl) = 0 Then

            MsgBox "Le texte de la cellule doit commencer par les lettres OM !"
            Exit Sub

        End If

        'si le commentaire n'existe pas, le crée
        If .Comment Is Nothing Then .AddComment

        'formate avec des retours à la ligne
        For I = 1 To UBound(Tbl)

            Texte = Texte & "OM" & Tbl(I) & vbCrLf

        Next I

        'suppression du dernier retour à la ligne inutile
        Texte = Left(Texte, Len(Texte) - Len(vbCrLf))

        'inscrit dans le commentaire
        .NoteText Texte

        'formate le commentaire
        With .Comment.Shape.TextFrame

            .Characters.Font.Bold = True
            .Characters.Font.Size = 18
            .AutoSize = True

        End With

    End With

End Sub

Tu commence par copier le code ci-dessus (cliquer sur CODE: TOUT SÉLECTIONNER juste au dessus de la zone de code) puis Ctrl+C ensuite, tu reviens sur ton classeur et tu appuis sur la combinaison de touches Alt+F11 là, tu te retrouves dans le VBE (Visual Basic Editor) tu as alors deux petites fenêtres sur la gauche, sur celle du haut tu peux voir un pictogramme feuille avec une petite grille nommée dans ton cas "Feuil1 (PMR)" ça représente le module de ta feuille de calcul "PMR", tu double-cliques dessus et dans la partie principale du VBE, une page vient de s'afficher, c'est là que tu colles le code précédemment copié. Une fois ceci fait, tu retournes dans ta feuille Excel et tu testes en entrant le texte souhaité en colonne B de B4 à B27. Attention toutes fois, le texte entré dans ces cellules doit toujours commencer par les lettres OM afin de permettre à la procédure de rajouter les retours à la ligne.

Fais un test et reviens si tu as problème !


J'ai oublié de préciser que quand tu vas vouloir enregistrer ton classeur, une boite de message va apparaître c'est dû au fait que ton classeur est en .xlsx donc, tu cliques sur le bouton "Non" et dans ce cas, l'explorateur s'ouvre et dans la liste de choix "Type :" cliques sur la ligne où se trouve l'extension .xlsm pour que ton classeur prenne en compte les macros

Salut Theze un tout GRAND merci pour ton aide ça commence à ressembler à ce que je souhaite faire

Par contre j'ai quelques détails qui me chagrine.

Voici les 2 choses supplémentaires que je voudrai ajouté :

- Est-ce possible d'afficher dans la cellule juste ceci : "OM 2016-32-0018 JOHN SMITH" mais quand on passe sur la cellule on a tout le détail donc avoir l'aspect commentaire mais comme ceci "OM 2016-32-0018 JOHN SMITH embarquement CRE E2130 8H30 LJ AT LJ"

- La deuxième chose c'est quand on inscrit dans une cellule "Pas de personnel 06H - 14H" les cellules de 06h à 14h sont en rouge

Voilà après ça je soumettrai le résultat à mon collègue.

D'avance je te remercie pour ton aide

Quelqu'un pour m'aider à finalisé mon Excel

Bonjour,

Affiche le contenu de la cellule dans une bulle au survol de la souris.

Ceuzin

Merci Ceusin,

Mais ce que Theze m'avait fait était parfait, les 2 choses que je voudrai c'est que dans la cellule il ne soie afficher que "OM 2016-19-0001 NOM_DE_LA_PERSONNE" mais quand on survole la cellule on a tout le détail et la deuxième choses que je voudrai c'est quand on note "Pas d'AT 06h - 14h" ou "Pas d'AT 14h-22h" ou "Pas d'AT 22h-06h" la tranche horaire concerner ce met en rouge.

D'avance je vous remercie

Voici un exemple de ce dont je parle quand l'agent n'est pas présent pour une prestation.

Merci d'avance

Bonjour,

Voici déjà pour la mise en forme conditionnelle.

Si tu veux modifier par la suite, tu sélectionnes la ou les cellules et ensuite tu te rends dans mise en forme conditionnelle: gérer les règles de mises en forme.

Bien à toi,

Bonjour,

- Est-ce possible d'afficher dans la cellule juste ceci : "OM 2016-32-0018 JOHN SMITH" mais quand on passe sur la cellule on a tout le détail donc avoir l'aspect commentaire mais comme ceci "OM 2016-32-0018 JOHN SMITH embarquement CRE E2130 8H30 LJ AT LJ"

Tu les prends où tes autres informations (embarquement CRE E2130 8H30 LJ AT LJ) ?

et la deuxième choses que je voudrai c'est quand on note "Pas d'AT 06h - 14h" ou "Pas d'AT 14h-22h" ou "Pas d'AT 22h-06h" la tranche horaire concerner ce met en rouge.

Je te re-poste ton classeur avec une mise en forme conditionnelle où les formules utilisées cherchent les paires d'heures (6 et 14, 14 et 22, 22 et 6) pour appliquer la MFC dans les cellules correspondantes.


Oups,

Désolé Jaackk7, pas rafraîchi !

Merci, je l'ai remanier j'avais oublié que l'on pouvait jouer avec les mises en forme conditionnelle

Maintenant il ne me reste plus qu'une chose à faire c'est pour l'affichage dans la cellule, avoir ceci d'afficher dans la cellule :

"OM 2016-19-0001 NOM_DE_LA_PERSONNE"

Et au passage de la souris on a une info bulle "OM 2016-19-0001 NOM_DE_LA_PERSONNE EXPLICATION DE LA TACHE A ACCOMPLIR"

Voilà j'espère que c'est réalisable

Merci pour votre aide en tout cas


Theze a écrit :

Bonjour,

- Est-ce possible d'afficher dans la cellule juste ceci : "OM 2016-32-0018 JOHN SMITH" mais quand on passe sur la cellule on a tout le détail donc avoir l'aspect commentaire mais comme ceci "OM 2016-32-0018 JOHN SMITH embarquement CRE E2130 8H30 LJ AT LJ"

Tu les prends où tes autres informations (embarquement CRE E2130 8H30 LJ AT LJ) ?

et la deuxième choses que je voudrai c'est quand on note "Pas d'AT 06h - 14h" ou "Pas d'AT 14h-22h" ou "Pas d'AT 22h-06h" la tranche horaire concerner ce met en rouge.

Je te re-poste ton classeur avec une mise en forme conditionnelle où les formules utilisées cherchent les paires d'heures (6 et 14, 14 et 22, 22 et 6) pour appliquer la MFC dans les cellules correspondantes.


Oups,

Désolé Jaackk7, pas rafraîchi !

Je les prends directement dans la cellule, je suppose que du faite que c'est inscrit dans la cellule il est impossible d'afficher une partie de la cellule ?

Jaackk7, je viens d'ouvrir ton classeur mais je pense que nous n'avons pas compris la même chose ! Ce que j'ai compris de la demande de gilou24, c'est qu'il veut colorer les cellules qui correspondent à la plage horaire, par exemple, si la cellule contient "Pas d'AT 06h - 14h", ce sont les cellules E10 à E18 qui doivent être colorées, enfin, c'est ce que j'ai compris mais bon !

Oui Theze, tu as bien compris ce que je voulais faire et c'est parfait avec la mises en forme conditionnel comme ça

Re,

Je les prends directement dans la cellule, je suppose que du faite que c'est inscrit dans la cellule il est impossible d'afficher une partie de la cellule ?

Tu peux n'afficher qu'une partie dans le commentaire mais pas le contraire ou alors, il faut jouer avec la couleur de fonte (par exemple, mettre en blanc si le fond de la cellule est blanc, le texte que tu veux cacher)

Donc rejouer avec une mise en forme conditionnel si je comprend bien ?

Donc dans ma cellule j'aurais ceci :

OM 2016-19-00012 JOHN SMITH Embarquement CRE E2130 8H30 PAR AT LL

Je dois créer une mises en forme conditionnel pour que la partie de texte comprenant EMBARQUEMENT dans une cellule soie en blanc alors ?


Bon ben j'ai tester la mises en forme conditionnel pensant que la partie de la cellule comprenant "Embarquement......" passe en blanc mais c'est toutes la cellule qui devient blanche donc sa m'arrange pas, est-ce réalisable ce que je veux faire ?

Re,

En MFC ce n'est pas possible, il te faut utiliser une macro. Remplace la procédure évènementielle que je t'avais déjà donné par celle-ci :

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim Tbl
    Dim I As Integer
    Dim Texte As String
    Dim Pos As Integer

    'seulement dans la zone de B4 à B27
    If Intersect(Target, Range("B4:B27")) Is Nothing Then Exit Sub

    With Target

        Pos = InStr(.Value, "Embarquement")

        If Pos <> 0 Then: .Characters(Pos, Len(.Value) - Pos + 1).Font.ColorIndex = 2: End If

        'si une suppression de plus de deux cellule, fin !
        If .Count > 1 Then Exit Sub

        'si la cellule est vide, suppression du commentaire et fin !
        If .Value = "" Then .Comment.Delete: Exit Sub

        'splite les valeurs de la cellule sur les lettre OM
        Tbl = Split(.Value, "OM")

        'si pas de lettres OM trouvées, message et fin !
        If UBound(Tbl) = 0 Then

            MsgBox "Le texte de la cellule doit commencer par les lettres OM !"
            Exit Sub

        End If

        'si le commentaire n'existe pas, le crée
        If .Comment Is Nothing Then .AddComment

        'formate avec des retours à la ligne
        For I = 1 To UBound(Tbl): Texte = Texte & "OM" & Tbl(I) & vbCrLf: Next I

        'suppression du dernier retour à la ligne inutile
        Texte = Left(Texte, Len(Texte) - Len(vbCrLf))

        'inscrit dans le commentaire
        .NoteText Texte

        'formate le commentaire
        With .Comment.Shape.TextFrame

            .Characters.Font.Bold = True
            .Characters.Font.Size = 18
            .AutoSize = True

        End With

    End With

End Sub

Merci de ta réponse, mais excel me dit qu'il y a une erreur de compilation quand je change le code :/ il me dit ceci :

END IF sans bloc IF

Erreur de ma part, voici le code corrigé :

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim Tbl
    Dim I As Integer
    Dim Texte As String
    Dim Pos As Integer

    'seulement dans la zone de B4 à B27
    If Intersect(Target, Range("B4:B27")) Is Nothing Then Exit Sub

    With Target

        Pos = InStr(.Value, "Embarquement")

        If Pos <> 0 Then .Characters(Pos, Len(.Value) - Pos + 1).Font.ColorIndex = 2

        'si une suppression de plus de deux cellule, fin !
        If .Count > 1 Then Exit Sub

        'si la cellule est vide, suppression du commentaire et fin !
        If .Value = "" Then .Comment.Delete: Exit Sub

        'splite les valeurs de la cellule sur les lettre OM
        Tbl = Split(.Value, "OM")

        'si pas de lettres OM trouvées, message et fin !
        If UBound(Tbl) = 0 Then

            MsgBox "Le texte de la cellule doit commencer par les lettres OM !"
            Exit Sub

        End If

        'si le commentaire n'existe pas, le crée
        If .Comment Is Nothing Then .AddComment

        'formate avec des retours à la ligne
        For I = 1 To UBound(Tbl): Texte = Texte & "OM" & Tbl(I) & vbCrLf: Next I

        'suppression du dernier retour à la ligne inutile
        Texte = Left(Texte, Len(Texte) - Len(vbCrLf))

        'inscrit dans le commentaire
        .NoteText Texte

        'formate le commentaire
        With .Comment.Shape.TextFrame

            .Characters.Font.Bold = True
            .Characters.Font.Size = 18
            .AutoSize = True

        End With

    End With

End Sub
Rechercher des sujets similaires à "agrandissement passage souris"