Transformer code en macro

Résolu
dudulleray -  
 dudulleray -
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. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    mais j'aimerai l'avoir sous forme de macro que je puisse appeller quand et si besoin. Precisez votre pensee svp!!
    1
  2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. dudulleray
     
    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
  6. dudulleray
     
    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
  7. dudulleray
     
    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
  8. dudulleray
     
    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