Autres Problème de sélection

  • Initiateur de la discussion Initiateur de la discussion mimirct3
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

mimirct3

XLDnaute Nouveau
Salut a tous.
J'ai trouvé un code VBA pour modifier la couleur de sélection.
Le code fonctionne très bien pour une seul sélection mais pas pour plusieurs.
Voici le code en question:
Public Old_Selection

Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Old_Selection = "" Then 'si il n'a pas de sélection, on remet à l'origine
With Range(Old_Selection)
With .Borders 'Les bordures
.LineStyle = xlNone
End With
With .Interior 'L'intérieur de la ou les cellules
.ColorIndex = xlNone
End With
End With
End If

Old_Selection = Target.Address

With Target 'Avec la ou les cellules sélectionnées
With .Borders 'On passe les bordures avec des lignes continues de couleur ROUGE (3)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 3
End With
With .Interior 'Avec l'intérieur de la ou les cellules on les remplies de la couleur BLEU CLAIR (34)
.ColorIndex = 34
End With
End With
End Sub

Et voici l'erreur qu'il me met:
La méthode 'Range' de l'objet '_worksheet' à échoué.

Je n'arrive pas à comprendre ce qui ce passe.
Merci d'avance.
 
Bonjour mimirct3,
Le code fonctionne très bien pour une seul sélection mais pas pour plusieurs.
Qu'entendez vous par là ?
Sur mon PC j'obtiens ça :
Test5.gif
 
Par contre la mise en forme de la cellule ne reste pas.
C'est à dire ?
La mise en forme d'origine ?
Si c'est ça, cela me semble très compliqué, je n'ai pas de solution. Mais peut être que quelqu'un en aura une.
Il faudrait mémoriser toutes les mises en forme ( couleurs, bordures, couleurs police .... ) de toutes les cellules concernées pour pouvoir les remettre correctement ensuite.
Sauf si le format initial est connu, vous pouvez le remettre.
Sauf s'il existe une autre astuce ... 😉
 
Voila deux fichier.
Le premier avec le code en question (test) et le deuxième avec un autre code (prepamoteur) que j'avais trouver mais que je penser qu'il ne fonctionner pas.
Du coup ce que je souhaitait faire cela fonctionne avec ce code, donc si tu n'y arrive pas, ne te prend pas la tête et je ferais avec celui la.
 

Pièces jointes

Bonsoir,
La macro de PrepaMoteur ne peut pas fonctionner car on a :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    With Target
Seulement Target seul est la valeur contenue dans la cellule. Peut être serait ce mieux avec Range(Target.Address)
Je ne suis pas allé plus loin.

En PJ une idée avec une autre approche en jouant sur une MFC avec :
Code:
Public Plage
Sub Worksheet_SelectionChange(ByVal Target As Range)
Cells.FormatConditions.Delete
Plage = Target.Address
With Range(Plage)
    .FormatConditions.Add Type:=xlExpression, Formula1:="=VRAI"
    .FormatConditions(1).Interior.Color = RGB(220, 240, 240)
    With .FormatConditions(1).Borders
        .LineStyle = xlContinuous
        .Weight = xlThin
        .Color = vbRed
    End With
End With
End Sub
Les formats initiaux sont conservés puisque la mise en forme sur sélection est faite par MFC. Peut être une idée à creuser.
Cela donne :
Test5.gif
 

Pièces jointes

Re,
La macro Worksheet_SelectionChange prend le pas sur copier coller.
Je ne vois guère de solution.
Une possible est de limiter la portée de la macro.
Par ex en PJ la macro n'agit que sur la zone A1:F40, en dehors le copier coller ou annuler fonctionnent.
Ce pb semble connu comme ici :
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
525
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
793
Réponses
12
Affichages
256
Retour