Transformer code en macro

Résolu
Bonjour a toutes et tous, Forum



Voila je souhaiterai svp si cela est possible en VBA transformer le code ci-dessous, qui déplace a l'aide des touches flèches du clavier une barre de repère jaune ici dans les colonnes A B C

PS: le code actuellement fonctionne, mais j'aimerai l'avoir sous forme de macro que je puisse appeller quand et si besoin.

je vous remercie d'avance pour votre temps et de votre savoir.

Bonne après midi a tous

Cordialement Ray

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Set champ = Range("A1:C1000")                 'Ou Range("La zone") si zone nommée

  For Each n In ActiveWorkbook.Names            'Restitution couleurs
    If n.Name = "mémoCoul" Then trouvé = True
  Next n

  If trouvé Then
    ncol = [mémoCoul]
    Z = [mémozone]
    col1 = champ.Areas(Z).Column
    col2 = champ.Areas(Z).Column + champ.Areas(Z).Columns.Count - 1
    
    For I = 1 To ncol
      x = "mémoAdresse" & I
      A = Evaluate([x])
      x = "mémoCouleur" & I
      B = Evaluate([x])
      Range(A).Interior.ColorIndex = B
    Next I
  End If

  '*** Mémorisation des couleurs
  If Not Intersect(champ, Target) Is Nothing And Target.Count = 1 Then
    
    For I = 1 To champ.Areas.Count
      If Not Intersect(champ.Areas(I), Target) Is Nothing Then zone = I
    Next I

    col1 = champ.Areas(zone).Column
    col2 = champ.Areas(zone).Column + champ.Areas(zone).Columns.Count - 1
    ActiveWorkbook.Names.Add Name:="mémoZone", RefersToR1C1:="=" & Chr(34) & zone & Chr(34)
    col1 = champ.Areas(zone).Column
    col2 = champ.Areas(zone).Column + champ.Areas(zone).Columns.Count - 1
    ncol = col2 - col1 + 1
    ActiveWorkbook.Names.Add Name:="mémoCoul", RefersToR1C1:="=" & Chr(34) & ncol & Chr(34)

    For I = 1 To ncol
      ActiveWorkbook.Names.Add Name:="mémoAdresse" & I, RefersToR1C1:= _
                               "=" & Chr(34) & Cells(Target.Row, I + col1 - 1).Address & Chr(34)
      ActiveWorkbook.Names.Add Name:="mémoCouleur" & I, RefersToR1C1:= _
                               "=" & Cells(Target.Row, I + col1 - 1).Interior.ColorIndex
      Cells(Target.Row, I + col1 - 1).Interior.ColorIndex = 6  'Jaune couleur de la barre de déplacement
    Next I
  
      End If
End Sub

8 réponses

  1. Bonjour,

    mais j'aimerai l'avoir sous forme de macro que je puisse appeller quand et si besoin. Precisez votre pensee svp!!
    1
    1. Re,

      Vu qu'il faut etre sur une feuille de calcul, gardez cette macro (c'est une macro) comme telle. Si vous voulez que cette macro se deroule quand vous en avez besoin, ajoutez au debut le test d'un drapeau: si a un (true) le code se deroule, si a zero (false) sortie de la macro. A vous de gere le drapeau.
      1
      1. Bonjour,

        un exemple avec un bouton avec ou sans. Cela peut-etre une valeur de cellules ou un click sur une cellule particuliere, une date ou autre evenement.

        https://www.cjoint.com/?CBdhWOkNook

        Bonne suite
        1
        1. Salut f894009,

          Merci pour la réponse, donc je souhaiterai faire de ce code une macro que je pourrai lancer par un simple

          Call Barre_de_repere
          par exemple

          ca me permetterai de l'adapter et de l'utilser dans un autre programme par la suite.

          Merci a plus tard bonne après midi

          Ray
          0
          1. Re salut f894009

            Merci pour cette réponse

            si svp vous avez le temps, pouvez vous me faire un exemple, je ne sais pas trop gérer les drapeaux comme vous mes dites.

            merci pour votre aide

            Ray
            0
            1. Bonjour f894009, Forum

              Bien recu le fichier, je vous en remercie.

              j'ai essayer le code et ca fonctionne bien, cela va mettre très utile pour un autre programme ou il me faudra solliciter la barre par un bouton.

              Mais pour mon programme actuel apparament il me faut cliquer sur le bouton plus dans une des colonnes A B C pour voir apparaitre la barre de défilement, cela ne m'ai
              pas trop prtique pour ce cas.

              Serait'il possible svp et toujours bien sur si vous avez le temps que cette barre soit toujours apparente et active dès l'ouverture du programme.

              Merci de vous interresser a mon soucis, j'ai essayer hier de trouver comment faire mais je ni suis pas parvenu.

              Merci j'apprécie beaucoup votre aide, bon Dimanche a vous

              Cordialement Ray
              0
              1. Re salut f894009

                Bien recu le nouveau fichier, ca fonctione bien et je vais l'adapter a mon programme

                tout en regardement comment ca marche

                Merci a vous et pour votre temps consacré pour le code dont j'avais besoin.

                je vous souhaite un excellent Dimanche

                Bye bye a bientot sans doute et encore merci

                Cordialement Raymond
                0