bonjour,
j'utilise office 2003, et j'ai un probleme dans ma macro avec la boucle for:
j'ai une erreur qui resort ("erreur de compilation: next sans for")
pourtant le for existe.
merci d'avance
bonjour,
j'utilise office 2003, et j'ai un probleme dans ma macro avec la boucle for:
j'ai une erreur qui resort ("erreur de compilation: next sans for")
pourtant le for existe.
merci d'avance
Salut,
tu dois avoir un If (ou autre...) non fermée à l'intérieur de ta boucle entre For et Next
bon pour ce bleme c'est resolu
là j'en ai un autre, avec l'erreur suivante ("erreur d'execussion '424': objet requis")
bon voila le code macro que j'ai ecris , qui sert a travers des regles de gestion de tester si une cellule est renseignée ou non, si non on colore le contenu de la cellule Bi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Sub renseigner() 'définition d'une cellule Dim cel As Range Dim contenu As String contenu = CreateObject("Excel.Application") Dim ligne As String ligne = CreateObject("Excel.Application") Dim dev As Double 'dev = CreateObject("Excel.Application") Dim numero As String numero = CreateObject("Excel.Application") 'declaration d'une var pour le debut de la boucle 'Dim debut As Range 'debut = Range("F" & 1).Select 'declaration d'une var pour la fin de la boucle 'Dim fin As Range 'fin = Range("F" & 171).Select '---------------boucle pour tester si devis de développement doit etre reinseigner ou non----------------- For Each cel In Range("F" & 1).EntireColumn 'mettre le contenu de la cellule dans la var contenu contenu = Active.Range.Formula 'comparaison entre contenu et la chaine de caractere "Evo" 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
N'oublie pas de mettre ton code entre 2 balises de CODE, sinon c'est illisible.
Avant de continuer, faut que tu m'expliques qu'est-ce que c'est que ces CreateObject("Excel.Application") que tu nous a collé partout au début...
PS: salut godz.
T'es pas très courageux aujourd'hui non?![]()
Content que ça ai résolu ton problème !
Pour ce qu'il en est de ton nouveau problème, pour commencer tu peux changer ton "Goto test" par un "Exit For", l'effet sera le meme puisque ton label se situe juste apres la boucle (et puis j'aime pas trop les goto :p)
Ensuite pour ton problème d'objet, tu essais d'assigner une référence à l'application excel "CreateObject("Excel.Application")" dans des variables de type string, c'est normal que ça plante ! :p Retire toutes les lignes contenant "CreateObject("Excel.Application")" elle n'ont pas d'utilité...
bein vraiment je ne sais pas ou il se situ, car c la seule chose que je reçois apres la compilation .
merci fouinard pour le next
pour l'autre probleme j'ai enlevé tous les creatOblect mais j'ai toujours le meme probleme et la meme erreur
plutot merci pour le go to loool
le compilateur ne te donne pas une ligne ? ou ne bloque pas sur une lors de l'erreur ?
ensuite je viens de voir, tu peux virer tous tes If et n'en laisser qu'un avec des or entre chaque expression : ligne <> "CHK" OR ligne <> "CHK-OK" OR etc.
ensuite changeen
Code : Sélectionner tout - Visualiser dans une fenêtre à part Range("F" & 1).EntireColumnou alors met cstr(xxx) xxx correspondant à un entier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Range("F1").EntireColumn
Ensuite change ton test :en
Code : Sélectionner tout - Visualiser dans une fenêtre à part If contenu Like "Evo" Thenet
Code : Sélectionner tout - Visualiser dans une fenêtre à part If contenu = "Evo" Thenen
Code : Sélectionner tout - Visualiser dans une fenêtre à part If dev Like " " Then
Code : Sélectionner tout - Visualiser dans une fenêtre à part If dev = " " Then
normalement quand ça plante t'as une fenetre qui s'affiche et qui t'inique l'erreur, et en bas t'as le choix entre fin et debugage
avec ce que je t'ai indiqué ça ne marche toujours pas ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 contenu = Active.Range.Formula
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 contenu = ActiveCell.Formula![]()
![]()
![]()
![]()
desole si je te fais vomir, mais c'est la premiere fois que je manipule les macros excel
Godzestla voulait dire que si on n'expose pas tout le problème quand on le demande, il n'aime pas poser des tas de questions (et parfois plusieurs fois les mêmes) pour ENFIN avoir les éléments nécessaires pour plancher et répondre.
En ce qui concerne Like, je te suggère de relire l'aide Visual Basic en ce qui concerne cet opérateur: il est fait pour être utilisé avec des caractères spéciaux, sinon il sert à illustrer le proverbe "pourquoi faire simple quand on peut faire compliqué".
C'est une erreur d'exécution que tu as maintenant, plus une erreur de compilation.
Ton problème c'est toujours le goto: bannis les goto, ou au moins ne mets jamais de goto qui envoie vers un point extérieur à la boucle.
Ce n'est pas moi que cela fait vomir...
C'est là que se situe l'erreur d'objet que tu as.
Il n'existe pas d'objet Active. L'interpréteur VBE te vomit son message d'erreur, mais, si tu remplace ton Active.Range par un objet qui existe, ActiveCell, alors là, il est content !
Je pense avoir une idée de ce que tu veux faire.
Ceci n'y correspondrait-il pas ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Option Explicit Option Compare Text Sub renseigner() Dim ornCellule As Range Const DistF2T As Long = 9 'nombre de décalages pour passer de F à T 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 ornCellule In Range("F1").EntireColumn.Cells 'Si la valeur de la ornCellulelule est EVO If ornCellule.Value = "Evo" Then 'Alors, selon le cas de la valeur de la ornCellulelule de la même ligne, colonne T Select Case ornCellule.Offset(0, 9).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 ornCellulelule correspondante dans la colonne B ornCellule.Offset(0, DistF2B).Font.Color = vbRed End Select 'si la ornCellulelule de la colonne F n'équivaut pas EVO Else 'il n'y a rien à faire non plus End If Next End Sub
Merciiii bcpppppp ça marche a merveille, c'est vraiment ce que je voulais.
milles merci
si je veux faire un if avec plusieurs conditions du genre " if condition1 and condition2" comment je peux le faire en VBA?
merci![]()
Partager