Formule de condition dans une macro

mikael2403

XLDnaute Junior
Bonjour le forum,

Je rencontre une difficulté sur une macro et je sollicite votre aide à ce sujet.

J'ai la macro suivante :

Public flag As Boolean
Sub PRC_Mail()
flag = True
Dim i As Integer
For i = Range("A40").End(xlUp).Row To 15 Step -1
If Not Application.Intersect(Range("I16:I23")) Is Nothing Then
Range("I14:I24").Select
Selection.Font.ColorIndex = 34
Selection.Interior.ColorIndex = 34
End If
If IsEmpty(Cells(i, 1).Value) And i <> 15 And i <> 25 And i <> 29 And i <> 32 And i <> 38 Then Rows(i).Delete
Next i
Application.ActivePrinter = "Amyuni PDF Converter sur LPT1:"
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, _
ActivePrinter:="Amyuni PDF Converter sur LPT1:", Collate:=True
flag = False
End Sub


La partie en jaune ne fonctionne pas.
Je souhaite que les cellules I14:I24 changent de couleur si les cellules I16:I23 sont vides. (Ce qui correspond à ma macro ci-dessus).

Je souhaite ajouter un autre argument identique qui est de changer la couleur d'autres cellules mais avec une couleur différentes. (Si les cellules J34:J37 sont vides alors les cellules J33:J37 sont de couleurs orange et avec un police orange).

Merci d'avance pour votre aide.
 

Pierrot93

XLDnaute Barbatruc
Re : Formule de condition dans une macro

Re

la methode "intersect" requiert au moins 2 arguments, là tu n'en a qu'un seul(une seule plage de cellule), mais je ne comprend pas bien ce que tu veux controler. Mets peut être ton fichier en pièce jointe, sans donnée confidentielle, avec résultat attendu.

@+
 

Staple1600

XLDnaute Barbatruc
Re : Formule de condition dans une macro

Re


Pour test, avec un 2ème argument comme dit Pierrot93 ; bonjour) ca fonctionne

Sub test()
If Not Intersect(ActiveCell, Range("A1:C1")) Is Nothing Then
With Range("A2")
.Font.ColorIndex = 34
.Interior.ColorIndex = 34
End With
End If
End Sub
 

mikael2403

XLDnaute Junior
Re : Formule de condition dans une macro

J'ai trouvé la solution :

Public flag As Boolean
Sub PRC_Mail()
flag = True
Dim i, j As Integer
Sheets("Propale").Range("I23").Select
j = 23
While Sheets("Propale").Range("I" & j).Value = "" And j >= 14
Range("I" & j).Select
With Selection.Interior
.ColorIndex = 34
.Pattern = xlSolid
End With
Selection.Font.ColorIndex = 34
j = j - 1
Wend
For i = Range("A40").End(xlUp).Row To 15 Step -1
If IsEmpty(Cells(i, 1).Value) And i <> 15 And i <> 25 And i <> 29 And i <> 32 And i <> 38 Then Rows(i).Delete
Next i
Application.ActivePrinter = "Amyuni PDF Converter sur LPT1:"
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, _
ActivePrinter:="Amyuni PDF Converter sur LPT1:", Collate:=True
flag = False
End Sub


En revanche, je veux ajouter à ce code une autre condition qui est de colorer d'autres cellules d'une autre couleur.
Si les cellules J34:J37 sont vides alors les cellules J33:J37 sont en orange et la police en orange également (Impression de voir une cellule sur fond orange sans contenu).

J'espère être clair dans mes explications.
Je ne peux malheureusement pas mettre le fichier en ligne car trop lourd.

Merci d'avance pour votre aide et vos réponses.

Mikael.
 

mikael2403

XLDnaute Junior
Re : Formule de condition dans une macro

Re bonjour le forum,

Désolé d'insister autant. Je dois rendre un projet pour lundi et je commence à paniquer un peu de ne pas arriver à la rendre dans le délai.

Je me casse la tête à essayer plusieurs méthode qui ne fonctionnent pas et me renvoient des erreurs.

Est-ce que quelqu'un aurait la solution à ce problème svp ?

Merci encore pour votre aide.

Mikael.
 

jeanpierre

Nous a quitté
Repose en paix
Re : Formule de condition dans une macro

Bonsoir le fil,

On se calme,

Pas suivi le fil (à cause des couleurs inexploitables), mais pour ta seconde question, peut-être voir une Mise en forme conditionnelle dans Format....

Faut-il faire le boulot à ta place alors que tu ne donnes même pas le moindre nonos à ronger ?

Bon, cool et bon WE
 

mikael2403

XLDnaute Junior
Re : Formule de condition dans une macro

Bonsoir Jean pierre, Bonsoir le forum,

Voici mon code :

Code:
Public flag As Boolean
Sub PRC_Mail()
flag = True
Dim i, j As Integer
Sheets("Propale").Range("I23").Select
j = 23
While Sheets("Propale").Range("I" & j).Value = "" And j >= 14
Range("I" & j).Select
With Selection.Interior
.ColorIndex = 34
.Pattern = xlSolid
End With
Selection.Font.ColorIndex = 34
j = j - 1
Wend
For i = Range("A40").End(xlUp).Row To 15 Step -1
If IsEmpty(Cells(i, 1).Value) And i <> 15 And i <> 25 And i <> 29 And i <> 32 And i <> 38 Then Rows(i).Delete
Next i
Application.ActivePrinter = "Amyuni PDF Converter sur LPT1:"
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, _
ActivePrinter:="Amyuni PDF Converter sur LPT1:", Collate:=True
flag = False
End Sub

Je ne peux pas utiliser le format conditionnel car le contenu de la 1ere cellule à masquer doit être visible et ne doit être modifiée qu'à l'éxécution de la macro.

En fait mon code ci-dessus fonctionne pour la 1ere condition que j'y ai indiqué mais je ne parviens pas en ajouter une 2e puis une 3e.

La condition devra être la suivante :

Condition 1) Si le contenu des cellules I16 à I23 sont vides alors les cellules de I14 à I23 doivent devenir bleu avec une police bleue.

Condition 2) Si le contenu des cellules J27 et J28 sont vides alors les cellules de J26 à J28 doivent devenir Verte avec police verte;

Condition 3) Si le contenu des cellules J34 à J37 sont vides alors les cellules de J33 à J37 doivent devenir orange avec police orange.

Je ne peux pas utiliser de forme conditionnelle car le contenu des cellules I16, J26 et J33 doivent rester visible avant l'éxécution de la macro.

Mon code ci-dessous fonctionne pour la condition 1 mais je ne parviens pas à ajouter les 2 autres. j'ai un message d'erreur à chaque fois.

Code:
Dim i, j As Integer
Sheets("Propale").Range("I23").Select
j = 23
While Sheets("Propale").Range("I" & j).Value = "" And j >= 14
Range("I" & j).Select
With Selection.Interior
.ColorIndex = 34
.Pattern = xlSolid
End With
Selection.Font.ColorIndex = 34
j = j - 1
Wend

Désolé de vous ennuyer avec ça.
J'espère que ma question est claire car je ne suis pas complètement expert en macro pourtant la conditions n'a pas l'air si difficile comme ça ! pourant....:(

Merci beaucoup.
 

mikael2403

XLDnaute Junior
Re : Formule de condition dans une macro

Bonsoir le Forum,

J'ai trouvé une solution qui ne fonctionne qu'à moitié :

Code:
Dim j, k, l As Integer

Sheets("Propale").Range("J37").Select
l = 37
    While Sheets("Propale").Range("J" & l).Value = "" And l >= 33
        Range("J" & l).Select
        With Selection.Interior
            .ColorIndex = 40
            .Pattern = xlSolid
        End With
    Selection.Font.ColorIndex = 40
    l = l - 1
Wend

Sheets("Propale").Range("J28").Select
k = 28
    While Sheets("Propale").Range("J" & k).Value = "" And k >= 26
        Range("J" & k).Select
        With Selection.Interior
            .ColorIndex = 35
            .Pattern = xlSolid
        End With
    Selection.Font.ColorIndex = 35
    k = k - 1
Wend

Sheets("Propale").Range("I23").Select
j = 23
    While Sheets("Propale").Range("I" & j).Value = "" And j >= 14
        Range("I" & j).Select
        With Selection.Interior
            .ColorIndex = 34
            .Pattern = xlSolid
        End With
    Selection.Font.ColorIndex = 34
    j = j - 1
Wend

Les cellules J26 et J33 ne changent pas de couleur de fond et de police.
J'ai essayé de changer les cellules en prenant plus haut ou plus bas mais c'est pareil.
Pourant ça fonctionne bien pour la cellule I14 (dernière partie du code).

Je n'arrive pas à trouver l'erreur.

Est-ce que quelqu'un s'y connait dans ce genre de méthode ?

Je vous remercie d'avance pour vos réponses.

Mikael
 

Discussions similaires

Réponses
0
Affichages
153
Réponses
5
Affichages
340
Réponses
2
Affichages
686

Statistiques des forums

Discussions
312 239
Messages
2 086 500
Membres
103 236
dernier inscrit
Menni