sianto57
Messages postés1Date d'inscriptionvendredi 1 juin 2007StatutMembreDernière intervention 1 juin 2007
-
1 juin 2007 à 14:10
MAXIMO71
Messages postés46Date d'inscriptionsamedi 25 mars 2006StatutMembreDernière intervention 7 juin 2007
-
4 juin 2007 à 20:10
Voila je suis en train de créer un programme pour réaliser une comptabilité analytique.
Cependant j'ai tapé le code en VBA mais je ne comprends pas l'erreur que m'affiche l'ordinateur lorsque je lance l'exécution.
Il m'affiche une erreur type Code 1004
voici le programme juqu'à l'endroit ou il bug
Sub SIGPRO()
Dim nombre As Currency
Dim ligne As Single
Dim colonne As Single
Dim classe As Single
Dim colonne1 As Single
Dim cpt As Single
cpt = 1
Sheets("RAG").Select
ligne = 9
colonne = 5
Do While cpt < 9
Do While ligne <= 76
nombre = Worksheets("RAG").Cells(ligne, colonne).Value
classe = Worksheets("RAG").Cells(ligne, 3).Value
If classe = 707100 Then
Worksheets("RAG").Cells(88, colonne1).Value = nombre
End If
If classe >= 603000 Or classe <= 603999 And classe >= 607000 Or classe <= 607999 And classe >= 609000 Or classe <= 609999 And classe >= 624100 Or classe <= 624199 Then
Worksheets("RAG").Cells(89, colonne1).Value =nombre
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 1 juin 2007 à 14:22
C'est combien, collone1, ici :
Worksheets("RAG").Cells(88, colonne1).Value = nombre ?????
et transpose ce raisonnement en langage courant (le français)... juste pour en voir la logique .... If classe >603000 Or classe < 603999And classe >= 607000 Or classe < = 607999 And classe >= 609000 Or classe <= 609999 And classe > = 624100 Or classe <= 624199 Then
cs_lermite222
Messages postés492Date d'inscriptionjeudi 5 avril 2007StatutMembreDernière intervention 2 juillet 20124 1 juin 2007 à 15:03
bonjour,
dans ta ligne
If classe >= 603000 Or classe <= 603999 And classe >= 607000 Or classe <= 607999 And classe >= 609000 Or classe <= 609999 And classe >= 624100 Or classe <= 624199 Then
Les tests que tu met sont ....
si classe>= 603000 ou classe <= 603999 OU EST LA DIFFERENCE
ex si classe = 603100 il est > 603100 OU <603999
Ca ne veux rien dire
En extrapolant, mon avis est que ce que tu veux faire est
If (classe >= 603000 and classe <= 603999) or (classe >= 607000 and classe <= 607999 ) or (classe >= 609000 Or classe <= 609999) or (classe >= 624100 and classe <= 624199) Then
De toute façons il y a un noeud dans les conditions
A+
louis
cs_lermite222
Messages postés492Date d'inscriptionjeudi 5 avril 2007StatutMembreDernière intervention 2 juillet 20124 1 juin 2007 à 15:13
PS: tu n'a pas l'air de connaitre la différence entre AND et OR
AND =ET ex: Classe=603100 alors classe est > 603000 ET <603999 donc le résultat est vrai.
OR = OU ex: classe 607100 alors classe > 603000 ET <603999 le résultat est FAUX OU classe est > 607000 ET <607999 ici le résultat est VRAI, la comparaison se termine avec la condition VRAI, une des condition OU est remplie.
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_lermite222
Messages postés492Date d'inscriptionjeudi 5 avril 2007StatutMembreDernière intervention 2 juillet 20124 1 juin 2007 à 15:16
correction.......
If (classe >= 603000 and classe <= 603999) or (classe >= 607000 and classe <= 607999 ) or (classe >= 609000 AND classe < = 609999) or (classe >= 624100 and classe <= 624199) Then
Satanas09
Messages postés18Date d'inscriptionsamedi 2 juin 2007StatutMembreDernière intervention22 août 2008 2 juin 2007 à 22:39
Bonsoir,
Oui la variable Single n'étant pas initialisée ... celle-ci prends la valeur 0.0 ... d'ou ..Cells(89,0.0) ==> Erreur 1004 il n'y as pas colonne 0 ..!
puis en passant pourquoi utiliser un Single pour une valeur pouvant varier de 1 à 255 ( pour xl< 2007 )
Satanas09 ..... Sapristi, saprista, souris grise et face de ra
MAXIMO71
Messages postés46Date d'inscriptionsamedi 25 mars 2006StatutMembreDernière intervention 7 juin 2007 4 juin 2007 à 20:10
Bonsoir, je me permet un petit commentaire sur les condition super longue. D'une part c'est très compliqué à visualiser d'autre part les opérrateurs logique OU (OR) et ET(AND) ne sont pas d'une utilisation intuitive quand ils sont associés.
Je te conseil d'utiliser
Select Case
Case NMR1
Case NMR2
Case NMR3
Case NMR4
Else case
End Select
Ainsi tu ne met qu'une condition par ligne et ton code devient plus lisible.
Bonne soirée
MAXIMO71
PS Si la réponse vous satistait
pensez à la valider