comment écrire cette condition If car je ne souhaite pas engager la macro si les cellules "a1:a3" et "c25:c30" de la feuille "INSCITS" ne sont pas vides
Version imprimable
comment écrire cette condition If car je ne souhaite pas engager la macro si les cellules "a1:a3" et "c25:c30" de la feuille "INSCITS" ne sont pas vides
Bonjour,
Code:
1
2
3
4
5
6
7
8
9
10
11 Sub TestVide() If CellsIsVide(Sheets("INSCITS").Range("a1:a3,c25:c30")) = True Then MsgBox "Vide" Else MsgBox "Pas Vide" End Sub Function CellsIsVide(Plage As Range) As Boolean Dim I As Long CellsIsVide = True For I = 1 To Plage.Count If Trim("" & Plage(I)) <> "" Then CellsIsVide = False: Exit Function Next End Function
Bonjour
Merci d'avoir pris en compte ma requête
Cette macro bloque sur la ligne If CellsIfVide.
Bien cordialement
c'est normal! la fonction s'appelle CellsIsVide et pas CellsIfVide
Voici ma ligne bloquante :
Code:If CellsIsVide(Sheets("Saisie résultats").Range("i8:i30,l8:l30")) = False Then MsgBox "Vider les cellules comportant des résultats"
chez moi ça fonctionne
quel es le message d'erreur?Code:if CellsIsVide(Sheets("Saisie résultats").Range("i8:i30")) = False Then MsgBox "Vider les cellules comportant des résultats"
voici la macro complète
Je souhaiterais que la numérotation de la feuille ne se réalise que si les cellules citées de la feuille "Saisie résultats" sont totalement videsCode:
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 classementDE1àX(Optional strBidon As String) 'Cette macro permet de numéroter les JSP pour les faire apparaitre dans un ordre souhaité dans les tableaux sport et oral/Manoeuvre If Range("B4") = "" Then MsgBox "Aucun coureur enregistré ( Pas de Dossard détecté)", vbYes, "" Exit Sub End If If CellsIFVide(Sheets("Saisie résultats").Range("i8:i30,l8:l30")) = False Then MsgBox "Vider les cellules comportant des résultats" Exit Sub End If lifin = Range("B" & Rows.Count).End(xlUp).Row Range("A4:A" & lifin).Select Dim c As Range, num As Long num = 1 For Each c In Selection If c.EntireRow.Hidden = False Then c.Value = num num = num + 1 End If Next c Range("A3").Value = "Clt" Range("A3").Select 'Protection de feuille Range("A4").Select ActiveSheet.Protect "melanie2015" ActiveSheet.Protect "melanie2015", True, True, True Range("A4").Select End Sub
je ne vois pas la fonction que je t'ais créé dans ton 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
33
34
35
36
37
38
39 Function CellsIsVide(Plage As Range) As Boolean Dim I As Long CellsIsVide = True For I = 1 To Plage.Count If Trim("" & Plage(I)) <> "" Then CellsIsVide = False: Exit Function Next End Function Sub classementDE1àX(Optional strBidon As String) 'Cette macro permet de numéroter les JSP pour les faire apparaitre dans un ordre souhaité dans les tableaux sport et oral/Manoeuvre If Range("B4") = "" Then MsgBox "Aucun coureur enregistré ( Pas de Dossard détecté)", vbYes, "" Exit Sub End If If CellsIsVide(Sheets("Saisie résultats").Range("i8:i30,l8:l30")) = False Then MsgBox "Vider les cellules comportant des résultats" Exit Sub End If lifin = Range("B" & Rows.Count).End(xlUp).Row Range("A4:A" & lifin).Select Dim c As Range, num As Long num = 1 For Each c In Selection If c.EntireRow.Hidden = False Then c.Value = num num = num + 1 End If Next c Range("A3").Value = "Clt" Range("A3").Select 'Protection de feuille Range("A4").Select ActiveSheet.Protect "melanie2015" ActiveSheet.Protect "melanie2015", True, True, True Range("A4").Select End Sub
même avec If CellsIsVide
copies ça dans ton code comme je te l'ai montré dans le post précédant!
Code:
1
2
3
4
5
6
7 Function CellsIsVide(Plage As Range) As Boolean Dim I As Long CellsIsVide = True For I = 1 To Plage.Count If Trim("" & Plage(I)) <> "" Then CellsIsVide = False: Exit Function Next End Function
Voici l'ensemble de la macro y compris ce que j'y ai ajouté
Cette fois la macro ne se lance même plus !
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 Function CellsIsVide(Plage As Range) As Boolean Dim I As Long CellsIsVide = True For I = 1 To Plage.Count If Trim("" & Plage(I)) <> "" Then CellsIsVide = False: Exit Function Next End Function Sub classementDE1àX(Optional strBidon As String) 'Cette macro permet de numéroter les JSP pour les faire apparaitre dans un ordre souhaité dans les tableaux sport et oral/Manoeuvre If Range("B4") = "" Then MsgBox "Aucun coureur enregistré ( Pas de Dossard détecté)", vbYes, "" Exit Sub End If If CellsIsVide(Sheets("Saisie résultats").Range("i8:i30,l8:l30")) = False Then MsgBox "Vider les cellules comportant des résultats" Exit Sub lifin = Range("B" & Rows.Count).End(xlUp).Row Range("A4:A" & lifin).Select Dim c As Range, num As Long num = 1 For Each c In Selection If c.EntireRow.Hidden = False Then c.Value = num num = num + 1 End If Next c Range("A3").Value = "Clt" Range("A3").Select 'Protection de feuille Range("A4").Select ActiveSheet.Protect "melanie2015" ActiveSheet.Protect "melanie2015", True, True, True Range("A4").Select End Sub
ce code là sort toujours de la sub
ce code la est bonCode:
1
2 If CellsIsVide(Sheets("Saisie résultats").Range("i8:i30")) = False Then MsgBox "Vider les cellules comportant des résultats" Exit Sub
Code:If CellsIsVide(Sheets("Saisie résultats").Range("i8:i30")) = False Then MsgBox "Vider les cellules comportant des résultats" :Exit Sub
vous trouverez en pièce jointe le fichier sur laquelle je bute
En colonne Clt, je lance la fameuse macro qui ne doit s’exécuter que si les cellules des feuilles Saisie résultats (sport) i4 à i30 sont vides
Merci de votre patience face à mon incompétence
oui, c'est u23q96k
Bonjour,
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76 Function CellsIsVide(Plage As Range) As Boolean Dim I As Long CellsIsVide = True For I = 1 To Plage.Count If Trim("" & Plage(I)) <> "" Then CellsIsVide = False: Exit Function Next End Function Sub classementDE1àX(Optional strBidon As String) 'Cette macro permet de numéroter les JSP pour les faire apparaitre dans un ordre souhaité dans les tableaux sport et oral/Manoeuvre If Range("B4") = "" Then MsgBox "Aucun coureur enregistré ( Pas de Dossard détecté)", vbYes, "" Exit Sub End If ' If Range("AC4") <> 0 Then ' MsgBox "Vous avez déja des résultats saisis en Vitesse du tableau Sport ", vbYes, "Vitesse !" ' Exit Sub ' End If ' If Range("AC5") <> 0 Then ' MsgBox "Vous avez déja des résultats saisis en Demi Fond du tableau Sport ", vbYes, "Demi Fond !" ' Exit Sub ' End If ' If Range("AC6") <> 0 Then ' MsgBox "Vous avez déja des résultats saisis en Saut en Hauteur du tableau Sport ", vbYes, "Saut en Hauteur !" ' Exit Sub ' End If ' If Range("AC7") <> 0 Then ' MsgBox "Vous avez déja des résultats saisis en Lancer de Poids du tableau Sport ", vbYes, "Lancer de Poids !" ' Exit Sub ' End If ' If Range("AC8") <> 0 Then ' MsgBox "Vous avez déja des résultats saisis en Grimper de corde du tableau Sport ", vbYes, "Grimper de corde !" ' Exit Sub ' End If ' If Range("AC9") <> 0 Then ' MsgBox "Vous avez déja des résultats saisis en Natation du tableau Sport ", vbYes, "Natation !" ' Exit Sub ' End If ' If Range("AC10") <> 0 Then ' MsgBox "Vous avez déja des résultats saisis en Parcours Sportif du tableau Sport ", vbYes, "Parcours Sportif !" ' Exit Sub ' End If ' If Range("AC11") <> 0 Then ' MsgBox "Vous avez déja des résultats saisis aux épreuves écrites du tableau Ecrit Manoeuvres ", vbYes, "Epreuves écrites!" ' Exit Sub ' End If ' If Range("AC12") <> 0 Then ' MsgBox "Vous avez déja des résultats saisis en Manoeuvres du tableau Ecrit Manoeuvres ", vbYes, "Manoeuvres !" ' Exit Sub ' End If ' If Range("AC13") <> 0 Then ' MsgBox "Vous avez des validations d'attestation saisies dans le tableau Ecrit Manoeuvres ", vbYes, "Attestation!" ' Exit Sub ' End If If CellsIsVide(Sheets("Saisie résultats").Range("i8:i30")) = False Then MsgBox "Vider les cellules comportant des résultats": Exit Sub lifin = Range("B" & Rows.Count).End(xlUp).Row Range("A4:A" & lifin).Select Dim c As Range, num As Long num = 1 For Each c In Selection If c.EntireRow.Hidden = False Then c.Value = num num = num + 1 End If Next c Range("A3").Value = "Clt" Range("A3").Select 'Protection de feuille Range("A4").Select ActiveSheet.Protect "melanie2015" ActiveSheet.Protect "melanie2015", True, True, True Range("A4").Select End Sub
Bien le Bonjour,
Pouvez me commenter cette macro car je ne comprends pas ce qu'elle fait ! (tous mes programmes sont enregistrés ou issus en partie de ce que je trouve sur le net)
Merci par avance
Bien cordialement