supprimer couleur à l'intersection ligne colonne

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

Etienne2323

XLDnaute Impliqué
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:

Jul018

XLDnaute Junior
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)
:confused:

Julien
@+
 

Pierrot93

XLDnaute Barbatruc
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
@+
 

Jul018

XLDnaute Junior
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

  • coloration cellule exemple.zip
    32.2 KB · Affichages: 34

Pierrot93

XLDnaute Barbatruc
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...
 

Etienne2323

XLDnaute Impliqué
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
 

Jul018

XLDnaute Junior
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
@+
 

Pierrot93

XLDnaute Barbatruc
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

@+
 

Jul018

XLDnaute Junior
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
@+
 

youky(BJ)

XLDnaute Barbatruc
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
 

Jul018

XLDnaute Junior
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
@+
 

Discussions similaires

Statistiques des forums

Discussions
312 518
Messages
2 089 260
Membres
104 081
dernier inscrit
Damel