Petit code a transformer en Macro Sub

Fermé
vieuxray - Modifié le 3 nov. 2018 à 20:25
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 - 4 nov. 2018 à 19:40
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.
A voir également:

9 réponses

yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
Modifié le 3 nov. 2018 à 10:13
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
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
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
Modifié le 3 nov. 2018 à 11:47
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
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
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
3 nov. 2018 à 12:45
"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
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
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
3 nov. 2018 à 14:30
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
3 nov. 2018 à 15:16
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
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
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
3 nov. 2018 à 19:17
peux-tu marquer comme résolu si cela fonctionne très bien?
0
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
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
3 nov. 2018 à 19:47
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
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
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
Modifié le 4 nov. 2018 à 19:40
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
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
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
Modifié le 4 nov. 2018 à 19:40
super, peux-tu alors marquer comme résolu?
0