Petit code a transformer en Macro Sub

Bonjour a tous et toutes, forum bonjour,



Ce petit code fonctionne très bien, il entoure la bordure de la cellule active en Rouge, pratique dans de grands tableaux.

Serait t'il possible svp de transformer le code ci-dessous en une Macro "Sub Curseur_Rouge()"

Merci a vous pour votre aide, bon W-end a vous.

Cdlt Ray

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

'*** Curseur Rouge entoure bordure cellule active

If Not Intersect(Target, Feuil1.Range("A3:J200")) Is Nothing Then
     If Target.Row < 3 Or Target.CountLarge > 1 Then Exit Sub
     With Me
On Error Resume Next
             .Shapes("Curseur").Visible = True                            '*** Cursor      '*** Variable (Cursor "True" =Visible) sinon (Cursor "False" =Non Visible)

 If Err <> 0 Then
     With .Shapes.AddShape(msoShapeRectangle, 6, 6, 8, 6)
             .Name = "Curseur"
             .Fill.ForeColor.RGB = vbRed
             .Line.Visible = True
     End With
 End If
     End With
 End If
On Error GoTo 0
          With Me.Shapes("Curseur")
                      .Left = Target.Left           'Gauche
                      .Top = Target.Top           'Haut/Bas
                      .Width = Target.Width      'Longueur
                      .Height = Target.Height    'Hauteur
            End With
End Sub


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

9 réponses

  1. Contributeur Ambassadeur
    bonjour, peux-tu poster ton code en utilisant la coloration syntaxique?

    par ailleurs, "transformer le code ci-dessous en une Macro" peut vouloir dire mille choses différentes.
    explique-nous plutôt ce que tu souhaites faire ensuite avec le nouveau code que tu demandes: comment tu vas l'utiliser, et ce que souhaites qu'il réalise.
    1
    1. Salut yg_be,

      Merci pour ta réponse,

      Je comprends pas, j'ai pourtant poster le code entre les balises, bon on va dire un coup raté, désolé.

      Je souhaiterai transformer ce code afin de pouvoir l'utiliser dans d'autres programmes.

      Mais actuellement dans mon programme, il arrive que j'ai n'ai pas besoin du petit rectangle rouge qui s'affiche.

      Avec une Macro Sub comme ça je peux l'appeler comme bon me semble.

      J'ai trouver ce code sur le net, il entoure la bordure de la cellule active en Rouge, pratique dans de grands tableaux.
      On pourrai baptiser la Macro "Sub Curseur_Rouge()" par Exemple

      Merci a toi pour ton aide, bon W-end a toi.

      Cdlt Ray

      '*** CURSEUR ROUGE RECTANGULAIRE
      Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      
      If Not Intersect(Target, Feuil1.Range("A3:J200")) Is Nothing Then
           If Target.Row < 3 Or Target.CountLarge > 1 Then Exit Sub
           With Me
      On Error Resume Next
                   .Shapes("Curseur").visible = Cursor                                'Variable (Cursor "True" =Visible) sinon (Cursor "False" =Non Visible)
      
       If Err <> 0 Then
           With .Shapes.AddShape(msoShapeRectangle, 6, 6, 8, 6)
                   .Name = "Curseur"
                   .Fill.ForeColor.RGB = vbRed
                   .Line.visible = True
           End With
       End If
           End With
       End If
      On Error GoTo 0
                With Me.Shapes("curseur")
                            .Left = Target.Left           'Gauche
                            .Top = Target.Top           'Haut/Bas
                            .Width = Target.Width      'Longueur
                            .Height = Target.Height    'Hauteur
                  End With
      
      0
      1. Contributeur Ambassadeur
        toujours pas de balise de code, relis bien l'article...

        ceci est une réponse possible à ta demande imprécise:
        Sub Curseur_Rouge()
        Dim rg As Range, ws As Worksheet
        Set ws = ActiveSheet
        Set rg = ActiveCell
        On Error Resume Next
        ws.Shapes("Curseur").Visible = True
        If Err <> 0 Then
            ws.Shapes.AddShape(msoShapeRectangle, 6, 6, 8, 6).Name = "Curseur"
            ws.Shapes.AddShape(msoShapeRectangle, 6, 6, 8, 6).Fill.ForeColor.RGB = vbRed
            ws.Shapes.AddShape(msoShapeRectangle, 6, 6, 8, 6).Line.Visible = True
        End If
        On Error GoTo 0
        ws.Shapes("Curseur").Left = rg.Left 'Gauche
        ws.Shapes("Curseur").Top = rg.Top 'Haut/Bas
        ws.Shapes("Curseur").Width = rg.Width 'Longueur
        ws.Shapes("Curseur").Height = rg.Height 'Hauteur
        End Sub
        0
    2. Re yg_be

      J'ai bien mis le code entre les balises, je ferai attention a l'avenir, j'ai cliquer sur la flèche qui pointe vers le bas cela m'a donner une liste de langage mais je mets lequel pour le VBA ???

      Ceci dit, merci pour le code modifier, mais quand je lance la macro le curseur apparait bien dans la cellule active mais quand je déplace le curseur redevient normal sans couleur rouge.

      Je pensais donc peut être une macro pour lancer le fonctionnement du curseur
      et une autre macro pour arrêter le fonctionnement du curseur.
      Un peu comme un chronomètre.

      Merci pour ton aide

      Cdlt Ray
      0
      1. Contributeur Ambassadeur
        "basic" pour VBA.
        prends ton temps et décris précisément ce que tu voudrais réaliser. ne parle pas trop vite de macro et de programme, concentre-toi sur le fonctionnement que tu souhaites.
        le code que je t'a fourni fait exactement ce que tu as demandé: la même chose que le code de départ. cela indique bien que ta demande était imprécise.
        0
    3. Re yg_be,

      Je souhaiterai que lorsque je lance la macro que la cellule active soit entouré de sa bordure en rouge et se déplace sur l'écran normalement mais en rouge.

      Et si il arrive que je n'ai pas ou plus besoin de l'affichage de la cellule active en rouge pouvoir désactiver la macro et que le déplacement de la cellule active sur l'écran redevienne normal.

      Comme je t'ai dit un peu comme un chrono que l'on démarre et arrête quand on n'a plus besoin.

      Voila, je me suis appliquer et fait de mon mieux pour être le plus précis possible.

      Merci a toi et bonne après midi.

      Cdlt Ray
      0
      1. Contributeur Ambassadeur
        ajoute alors ceci dans un module existant ou nouveau:
        Public BRvisible As Boolean
        Sub voirBR()
        BRvisible = True
        End Sub
        Sub cacherBR()
        BRvisible = False
        End Sub

        ensuite, dans Worksheet_SelectionChange, ajoute ceci après
        .Width = Target.Width     'Longueur
        :
           .Visible = BRvisible
        0
    4. Re

      Merci pour ta réponse,

      Donc si j'ai bien compris

      Je copie les codes que tu viens de faire dans module ça ok

      Puis je reprends mon programme original, je copie la macro Sub Curseur_Rouge() dans un module

      Puis je vais dans "Worksheet_SelectionChange" de mon programme original
      et je copie " .Visible = BRvisible" après .Width = Target.Width 'Longueur

      Pour l'utilisation je place le code Sub voirBR() ou j'ai besoin

      Puis si je souhaite l'arrèter je place le code Sub cacherBR() là ou je n'ai plus besoin

      Merci beaucoup pour les codes, j'attends ta réponse afin d'éviter des manipulations inutiles.

      et je modifie.

      Cdlt Ray
      0
      1. Contributeur Ambassadeur
        oublie Sub Curseur_Rouge(), c'était une réponse inutile à une question imprécise.
        pour le reste, je pense que tu m'as compris.

        tu avais parlé de nouvelles macros, tu n'avais pas mentionné que tu allais appeller les nouvelles sub ailleurs: on verra ce que cela va donner.
        quand tu écris "je lance la macro", je comprends que c'est toi qui va le faire. si un programme appelle une sub, c'est autre chose. le vocabulaire permet de se faire comprendre.
        0
    5. Re Salut yg_be,

      Obliger de sortir un moment, mais bon voila, j'ai fait les essais ça fonctionne très bien.

      'Il faudrait tester si les deux colonnes (E et F) ne sont plus coloriés en Rouge pour
      placer le code "Call voirBR()" de réactivation du curseur rouge.

      Si colonne (E et F) ne sont plus en rouge alors "Call voirBR()" = réactivation

      Sinon faire en sorte de ne pas réactivé tant qu'une des colonnes (E ou F) comporte encore une cellule rouge.

      Je n'ai pas trouvé d'autres idées a moins d'une recopie automatique mais la c'est une autre histoire.

      Dit moi svp , si l'idée est bonne svp

      Merci a toi bonne soirée déjà

      Cdlt Ray
      0
      1. Contributeur Ambassadeur
        peux-tu marquer comme résolu si cela fonctionne très bien?
        0
    6. re yg_be

      Comment svp je peux tester les deux colonnes (E et F) après c'est bon, je t'embêtes plus, merci

      bonne soirée a toi

      'Il faudrait tester si les deux colonnes (E et F) ne sont plus coloriés en Rouge pour
      placer le code "Call voirBR()" de réactivation du curseur rouge.

      Si colonne (E et F) ne sont plus en rouge alors "Call voirBR()" = réactivation

      Sinon faire en sorte de ne pas réactivé tant qu'une des colonnes (E ou F) comporte encore une cellule rouge.
      0
      1. Contributeur Ambassadeur
        quand tu écris "comment je peux tester", je suppose que "je", ce n'est pas toi?
        merci d'utiliser un vocabulaire précis, et d'indiquer aussi "quand".
        merci aussi d'essayer, dès le départ, d'expliquer l'ensemble de ce que tu veux réaliser. pour éviter les fausses pistes.
        0
    7. Salut yg_be,

      Merci pour ta réponse,

      Je comprends bien mais ce n'ai pas toujours facile d'écrire ce que l'on souhaite et toi de bien comprendre ce que je voudrais réaliser, surtout quand la demande est mal formuler, désolé.

      Donc, une fois terminer la recopie d'une ou des formules qui se sont trouvé effacer dans les colonnes (E et F).

      Je souhaiterais svp effectuer un test sur les colonnes (E et F).

      Je voudrais faire ré apparaitre le curseur rouge en étant sur que les colonnes (E et F) ne comporte plus de cellules colorisés en rouge.

      Ma pensée Ex:

      Tant qu'une des deux colonnes a encore une ou des cellules colorisé en Rouge alors on ne ré active PAS le curseur rouge.

      Si les deux colonnes n'ont plus aucune cellule colorisé en Rouge alors ON peux activé le curseur rouge.

      Merci pour ton aide, un bon dimanche a toi.

      Cdlt Raymond
      0
      1. Contributeur Ambassadeur
        essayons: nous avons un ordinateur et une personne. appelons-les "Excel" et "Ray". aucun des deux ne s'appelle "je".

        Excel est programmé pour réagir d'une certaine façon à ce que fait Ray.
        Tu voudrais changer cette façon de réagir.

        Je pense avoir compris que:
        1° pour le moment, Excel met toujours une bordure rouge autour de la cellule active
        2° tu voudrais que, si une des cellules des colonnes E ou F est colorée en rouge, Excel ne mette plus de bordure rouge autour de la cellule active.

        ai-je bien compris?
        si oui, il changer la programmation de Excel, pour qu'il vérifie si il y a du rouge en E ou F, et décide, en fonction de cela, d'afficher ou pas la bordure rouge.

        on s'éloigne de plus en plus de ta demande initiale.
        0
    8. Salut yg_be

      Fini, stop

      Je vais pas t'écrire des romans a chaque fois que je fais une demande qui en soit n'ai si compliquer comme tu le prétemps.

      J'ai fini par trouver.

      Merci pour l'aide déjà apporter

      Ray
      0
      1. Contributeur Ambassadeur
        super, peux-tu alors marquer comme résolu?
        0