supprimer couleur à l'intersection ligne colonne

  • Initiateur de la discussion Initiateur de la discussion Jul018
  • 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 !

Jul018

XLDnaute Junior
Bonjour le Forum,

j'ai un petit souci avec une macro. L'objectif de cette dernière est de changer la couleur à l'intersection de Lignet et Colonne deux variables définies par des cirtères. En l'occurence leur égalité avec RAffaire et NSemaine.

Lors de l'exécution de la macro j'ai le message suivant
Erreur de compilation, incompatibilité de type

avec dans cette ligne de code ..."Ligne" surligné:
Code:
If Not Intersect(Ligne, Colonne) Is Nothing Then

je suppose que cela est du à la définiton de mes variables mais je ne vois pas comment les initialiser d'une autre façon..

je m'en remets à vous

Code:
Sub Supprim_Color()
Dim Raffaire As Variant
Dim NSemaine As Long
Dim Intersection As Range
Dim Colonne As Long
Dim Ligne As Long


Range("A4").Select
While ActiveCell.Value <> Raffaire
ActiveCell.Offset(1, 0).Select
If ActiveCell.Value = Raffaire Then Ligne = ActiveCell.Row
Wend

Range("BC3").Select
While ActiveCell.Value <> NSemaine
ActiveCell.Offset(0, -1).Select
If ActiveCell.Value = NSemaine Then Colonne = ActiveCell.Column
Wend

With Sheets("MoSemaine")
Application.EnableEvents = False
If Not Intersect(Ligne, Colonne) Is Nothing Then
Worksheets(ActiveSheet.Name).Cells(Ligne.Row, Colonne.Column).Interior.ColorIndex = 4242
End If
Application.EnableEvents = True
End With

End Sub

merci par avance..

Julien
@+
 
Re : supprimer couleur à l'intersection ligne colonne

Salut Jul018,
je te propose une petite variante de ton code avec des recherches plutot que des boucles. Vois si ça te convient.

Code:
Sub Supprim_Color()
Dim Raffaire As Variant
Dim NSemaine As Long
Dim LigneRecherche As Variant, ColonneRecherche As Variant
Dim LigneRaffaire As Long
Dim ColonneNSemaine As Byte

Application.ScreenUpdating = False

'il va falloir modifier ces ranges au besoin pour que la macro fonctionne
Raffaire = Range("D60000").Value 
NSemaine = Range("E60000").Value

Set LigneRecherche = Range("A4:A65536").Find(Raffaire, LookIn:=xlValues, LookAt:=xlWhole)
If Not LigneRecherche Is Nothing Then
    LigneRaffaire = LigneRecherche.Row
Else
    Exit Sub
End If

Set ColonneRecherche = Range("B3:BC3").Find(NSemaine, LookIn:=xlValues, LookAt:=xlWhole)
If Not ColonneRecherche Is Nothing Then
    ColonneNSemaine = ColonneRecherche.Column
Else
    Exit Sub
End If

Sheets("MoSemaine").Select
Application.EnableEvents = False
Cells(LigneRaffaire, ColonneNSemaine).Interior.ColorIndex = 4242
Application.EnableEvents = True

End Sub

Cordialement,

Étienne
 
Dernière édition:
Re : supprimer couleur à l'intersection ligne colonne

Salut youky,

Merci pour ta réponse..

Il semblerait qu'une partie du problème soit résolu car je n'ai plus le message d'erreur en question.

En revanche un nouveau à fait son apparrition au niveau de "Intersect"

erreur de compilation : argument non facultatif

Cela provient peut être du fait que je me suis inspiré pour cette fonction je me suis inspiré d'une fonction de type
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
😕

Julien
@+
 
Re : supprimer couleur à l'intersection ligne colonne

Bonjour à tous

peut être ainsi, mais pas sur d'avoir tout compris, à noter que la méthode "intersect" requiert au moins 2 objets "range" :

Code:
If ligne > 0 And colonne > 0 Then Cells(ligne, colonne).Interior.ColorIndex = 3

bon après midi
@+
 
Re : supprimer couleur à l'intersection ligne colonne

Bonjour Etienne, bonjour Pierrot,

@Etienne j'ai essayé ton code, il n'y aucun message d'erreur lors du lancement de la macro mais curieusement il n'y a pas d'effet non plus sur ma feuille

@Pierrot j'ai changé l'initalisation de mes deux variables Ligne Colonne et j'ai à nouveau un message d'erreur erreur de compilation argument non facultatif au niveau de intersect

je met en lien un exemple de mon fichier

merci par avance

Julien
@+
 

Pièces jointes

Re : supprimer couleur à l'intersection ligne colonne

Re

quelle est la ligne de code qui pose problème et dans quel module se trouve t'elle ?

question subsidiaire, pourquoi modifier les arguments des procédures événementielles existantes, risque de poser des problémes...
 
Re : supprimer couleur à l'intersection ligne colonne

Re,
j'ai fait une petite modification dans le code plus haut. Il faut spécifier qu'est-ce que Raffaire et NSemaine. Il faudrait vérifier que les ranges ne sont pas vides pour que la recherche se fasse bien !

Bonne continuité !

Étienne
 
Re : supprimer couleur à l'intersection ligne colonne

Re,

La ligne de code qui pose problème est la suivante:
Code:
If Not Intersect(Cells(Ligne, Colonne)) Is Nothing Then
à la fin du module 1

Quand à la modification des arguments de procédures, il n'y a aucune raison valable, juste une recopie d'un code qui s'en servait..

Julien
@+
 
Re : supprimer couleur à l'intersection ligne colonne

Re,

oui normal que cela bogue, tu n'as qu'un argument range en gras et bleu :

Code:
If Not Intersect([B][COLOR="Blue"]Cells(Ligne, Colonne)[/COLOR][/B] ) Is Nothing Then

il en faut au moins 2, pour exemple le tien avec la colonne B :

Code:
If Not Intersect([COLOR="blue"][B]Cells(Ligne, Colonne)[/B][/COLOR] , [B][COLOR="Green"]Range("B:B")) [/COLOR][/B]Is Nothing Then

@+
 
Re : supprimer couleur à l'intersection ligne colonne

RE,

Je me rends compte que peut être la voie que j'ai choisie n'est pas la plus simple et qui en existe sans doute une plus directe.

L'objet de ma macro est de d'enlever (lors du click sur le bouton annuler de l'usf) sa couleur à la cellule qui a été double clikée .

En effet lors du double click une macro colore la cellule en jaune, ouvre un usf qui contient d'office le numéro de la semaine (ligne3) et le nom du monteur (colonne A) correpondant à la cellule double clickée.

Tout ce que je souhaitais c'était de pouvoir en cas d'annulation revenir à une coloration de cellule blanche.

@Etienne j'ai tenter de définir les variable NAffaire et NSemaine avec la valeur des textBox mais j'obtiens un nouveau message d'erreur
erreur 1004 impossible de définir la propriété colorindex de al classe interior

sur la ligne
Code:
Cells(LigneRaffaire, ColonneNSemaine).Interior.ColorIndex = 4242

Julien
@+
 
Re : supprimer couleur à l'intersection ligne colonne

Bonjour à tous du fil,
Puisque la cellule a été doubleClické si les macro n'utilisent pas de select
la cellule colorée doit être toujours sélectionnée
Cette ligne suffirait......
ActiveCell.Interior.ColorIndex = xlNone
 
Re : supprimer couleur à l'intersection ligne colonne

Bonjour le forum,

Youki avait raison. Puisse qu'il s'agit de décolorer la cellule à la suite du click sur le bouton annulé aucun select n'a encore été utilisé. Donc la simple ligne de code

Code:
ActiveCell.Interior.ColorIndex = xlNone
suffit.

Un grand merci à tous ceux qui m'ont aidé..

Bonne journée.

Julien
@+
 
- 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

  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
649
Réponses
3
Affichages
582
Retour