Code:
1
2
3
4
5
6 If condition1 AND condition2 Then 'ce que tu veux faire Else 'ce qu'il faut faire sinon End If
Version imprimable
Code:
1
2
3
4
5
6 If condition1 AND condition2 Then 'ce que tu veux faire Else 'ce qu'il faut faire sinon End If
merci bcp
je viens de m'appercevoir que le code que vous m'avez donner ne fait pas le test sur la chaine "ANU" pourtant c dans le code.
ça peut etre quoi le bleme?
"Ce n'est peut-être pas "ANU" qu'il y a dans la cellule, mais "ANU " ou " ANU" voire même " ANU " (se méfier des espaces ! C'est vraiment sadique ces trucs là ;)
non, j'ai verifié et c'est "ANU":?
Il y a bien EVO dans la colonne F de la même ligne ?
oui
en plus il fait pas le test sur les lignes de la colonne AG si elle vide
Le contenu de ta cellule est-il le résultat d'une formule? Si c'est le cas utilise .Text au lieu de .Value. ;)
Et on ne sait jamais: fais attention à la casse. Ca se trouve il est écrit "anu" et pas "ANU" dans la cellule, car VBA est sensible à la casse par défaut (pour l'y rendre insensible il faut taper Option Compare Text en début de module).
:nono: .Text, c'est pour récupérer l'affichage, .Value, c'est pour récupérer la Valeur, et .Formula c'est pour récupérer ce qui est écrit dedans.
Ce sont 3 propriétés différentes, et leur objet n'a pas de rapport avec le fait qu'il y ait une formule ou pas.
Si le .Formula = "=19.6/100"
Alors le .Value = 0.196
Et le .Texte pourrait être " 19.60%"
Option Compare Text mis dans le code proposé ;)
bon en voila une mais ça marche pas loool:
voila un autre, mais ça marche toujours pas:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 Sub renseigner2() Dim Cel As Range Dim var As String Dim dev As String Const DistF2T As Long = 9 'nombre de décalages pour passer de F à T Const DistT2AG As Long = 13 'nombre de décalages pour passer de T à AG Const DistF2B As Long = -4 'nombre de décalages pour passer de F à B '---------------boucle pour tester si devis de développement doit etre renseigner ou non----------------- For Each Cel In Range("F1").EntireColumn.Cells 'Si la valeur de la Cel est EVO dev = Cel.Offset(0, 33).Value If Cel.Value = "Evo" And dev = " " Then 'Alors, selon le cas de la valeur de la cel de la même ligne, colonne T var = Cel.Offset(0, 13).Value Select Case var 'si l'on a l'une des valeurs suivantes : "CHK", "CHK-OK", "ANA", "ANU", "ATT" Case "CHK", "CHK-OK", "ANA", "ANU", "ATT" 'il n'y a rien à faire 'sinon Case Else 'colorer la Cel correspondante dans la colonne B Cel.Offset(0, DistF2B).Font.Color = vbRed End Select 'si la Cel de la colonne F n'équivaut pas EVO Else 'il n'y a rien à faire non plus End If Next End Sub
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 Option Explicit Option Compare Text Sub renseigner2() Dim Cel As Range Dim var As String Const DistF2T As Long = 14 'nombre de décalages pour passer de F à T Const DistF2AG As Long = 27 'nombre de décalages pour passer de F à AG Const DistF2B As Long = -4 'nombre de décalages pour passer de F à B '---------------boucle pour tester si devis de développement doit etre renseigner ou non----------------- For Each Cel In Range("F1").EntireColumn.Cells 'Si la valeur de la Cel est EVO var = Cel.Offset(0, DistF2AG).Value If Cel.Value = "Evo" And var = " " Then 'Alors, selon le cas de la valeur de la cel de la même ligne, colonne T Select Case Cel.Offset(0, DistF2T).Value 'si l'on a l'une des valeurs suivantes : "CHK", "CHK-OK", "ANA", "ANU", "ATT" Case "CHK", "CHK-OK", "ANA", "ANU", "ATT" 'il n'y a rien à faire 'sinon Case Else 'colorer la Cel correspondante dans la colonne B Cel.Offset(0, DistF2B).Font.Color = vbRed End Select 'si la Cel de la colonne F n'équivaut pas EVO Else 'il n'y a rien à faire non plus End If Next End Sub
Bonjour,
Essaye de remplacer
qui teste var = un espaceCode:If Cel.Value = "Evo" And var = " " Then
par
qui teste var = videCode:If Cel.Value = "Evo" And var = "" Then
j'ai essayé et ça donne l'erreur suivante: "erreur d'execution '91': variable objet ou variable de bloc with non definie" voila le code:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 Option Explicit Option Compare Text Sub renseigner2() Dim Cel As Range Dim var As Range Const DistF2T As Long = 14 'nombre de décalages pour passer de F à T Const DistF2AG As Long = 27 'nombre de décalages pour passer de F à AG Const DistF2B As Long = -4 'nombre de décalages pour passer de F à B '---------------boucle pour tester si devis de développement doit etre renseigner ou non----------------- For Each Cel In Range("F1").EntireColumn.Cells 'Si la valeur de la Cel est EVO var = Range("AG1").EntireColumn.Cells If Cel.Value = "Evo" And var = "" Then 'Alors, selon le cas de la valeur de la cel de la même ligne, colonne T 'Select Case Cel.Offset(0, DistF2T).Value 'si l'on a l'une des valeurs suivantes : "CHK", "CHK-OK", "ANA", "ANU", "ATT" 'Case "CHK", "CHK-OK", "ANA", "ANU", "ATT" 'il n'y a rien à faire 'sinon 'Case Else 'colorer la Cel correspondante dans la colonne B Cel.Offset(0, DistF2B).Font.Color = vbRed 'End Select 'si la Cel de la colonne F n'équivaut pas EVO Else 'il n'y a rien à faire non plus End If Next End Sub
Justement: l'affichage c'est en général ce que tout le monde veut récupérer. Ils se fichent de la formule qui est derrière, ce qu'ils veulent c'est ce qu'ils lisent (donc l'affichage).
Mais ne t'inquiètes pas je savais très bien la différence: c'est juste qu'à force d'aider les gens je me suis rendu compte que .Text était très souvent la réponse à leur problème.
Tu peux essayer avec ça :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 Option Explicit Option Compare Text Sub renseigner2() Dim Cel As Range Dim var As Range Const DistF2T As Long = 14 'nombre de décalages pour passer de F à T Const DistF2AG As Long = 27 'nombre de décalages pour passer de F à AG Const DistF2B As Long = -4 'nombre de décalages pour passer de F à B '---------------boucle pour tester si devis de développement doit etre renseigner ou non----------------- For Each Cel In Range("F:F") 'Range("F1").EntireColumn.Cells 'Si la valeur de la Cel est EVO Set var = Cel.Offset(0, 27) '.EntireColumn.Cells If Cel.Value = "Evo" And var.Value = "" Then 'Alors, selon le cas de la valeur de la cel de la même ligne, colonne T 'Select Case Cel.Offset(0, DistF2T).Value 'si l'on a l'une des valeurs suivantes : "CHK", "CHK-OK", "ANA", "ANU", "ATT" 'Case "CHK", "CHK-OK", "ANA", "ANU", "ATT" 'il n'y a rien à faire 'sinon 'Case Else 'colorer la Cel correspondante dans la colonne B Cel.Offset(0, DistF2B).Font.Color = vbRed 'End Select 'si la Cel de la colonne F n'équivaut pas EVO Else 'il n'y a rien à faire non plus End If Next End Sub
ça donne plus d'erreur, mais la macro ne donne plus aucun resultat :?
Il faut peut-être que tu enlèves les commentaires ...
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 Option Explicit Option Compare Text Sub renseigner2() Dim Cel As Range Dim var As Range Const DistF2T As Long = 14 'nombre de décalages pour passer de F à T Const DistF2AG As Long = 27 'nombre de décalages pour passer de F à AG Const DistF2B As Long = -4 'nombre de décalages pour passer de F à B '---------------boucle pour tester si devis de développement doit etre renseigner ou non----------------- For Each Cel In Range("F:F") 'Range("F1").EntireColumn.Cells 'Si la valeur de la Cel est EVO Set var = Cel.Offset(0, 27) '.EntireColumn.Cells If Cel.Value = "Evo" And var.Value = "" Then 'Alors, selon le cas de la valeur de la cel de la même ligne, colonne T Select Case Cel.Offset(0, DistF2T).Value 'si l'on a l'une des valeurs suivantes : "CHK", "CHK-OK", "ANA", "ANU", "ATT" Case "CHK", "CHK-OK", "ANA", "ANU", "ATT" 'il n'y a rien à faire 'sinon Case Else 'colorer la Cel correspondante dans la colonne B Cel.Offset(0, DistF2B).Font.Color = vbRed End Select 'si la Cel de la colonne F n'équivaut pas EVO Else 'il n'y a rien à faire non plus End If Next End Sub
je l'ai fais mais ça donne rien :(
est ce que le fait que la 2eme cellule contient une valeur numerique peut etre la cause du probleme?
Salut nsqualli et le forum
Comme j'arrive après le début de la bataille, mes remarques sont sur la macros existante au temps de la réponse.
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 For Each cel In Range("F" & 1).EntireColumn contenu = Active.Range.Formula If contenu Like "Evo" Then GoTo Test End If Next cel '---------teste sur les regles de gestion------------ Test: ligne = Range("T1:T171").Formula 'dev = Range("AG1:AG171").Formula ------ 'deplacer dans le corps du code avant son test 'condition sur la difference avec Check-in If ligne <> "CHK" Then 'condition sur la difference avec Check-in OK If ligne <> "CHK-OK" Then 'condition sur la difference avec ANA If ligne <> "ANA" Then 'condition sur la difference avec ANU If ligne <> "ANU" Then 'condition sur la difference avec ATT If ligne <> "ATT" Then 'verifier si devis developpement est mal renseigné dev = Range("AG1:AG171").Formula If dev Like " " Then numero = Range("B1:B171").Formula.Select Selection.Font.ColorIndex = 12 End If End If End If End If End If End If End Sub
Bon a tous ceux qui m'ont vraiment aider ;)
le probleme est resolu et voila le code final, si ça peut aider quelqu'un d'autre:
bon courageCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 Option Explicit Option Compare Text Sub renseigner2() Dim Cel As Range Dim var As Range Const DistF2T As Long = 14 'nombre de décalages pour passer de F à T Const DistF2AG As Long = 27 'nombre de décalages pour passer de F à AG Const DistF2B As Long = -4 'nombre de décalages pour passer de F à B '---------------boucle pour tester si devis de développement doit etre renseigner ou non----------------- For Each Cel In Range("F1:F" & Range("F65000").End(xlUp).Row) 'Si la valeur de la Cel est EVO et la cellule du devis est vide If Cel.Value = "Evo" And Cel.Offset(0, DistF2AG) = "" Then 'Alors, selon le cas de la valeur de la cel de la même ligne, colonne T Select Case Cel.Offset(0, DistF2T).Value 'si l'on a l'une des valeurs suivantes : "CHK", "CHK-OK", "ANA", "ANU", "ATT" Case "CHK", "CHK-OK", "ANA", "ANU", "ATT" 'il n'y a rien à faire 'sinon Case Else 'colorer la Cel correspondante dans la colonne B Cel.Offset(0, DistF2B).Font.Color = vbRed End Select 'si la Cel de la colonne F n'équivaut pas EVO Else 'il n'y a rien à faire non plus End If Next End Sub