Petit code a transformer en Macro Sub

vieuxray -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
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. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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
  2. vieuxray
     
    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. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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
  3. vieuxray
     
    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. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      "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
  4. vieuxray
     
    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. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. vieuxray
     
    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. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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
  7. vieuxray
     
    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. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      peux-tu marquer comme résolu si cela fonctionne très bien?
      0
  8. vieuxray
     
    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. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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
  9. vieuxray
     
    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. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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
  10. vieuxray
     
    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. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      super, peux-tu alors marquer comme résolu?
      0