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. 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
    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
      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
        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. 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
            1. Bonjour,

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