Besoin d'aide svp

sianto57 Messages postés 1 Date d'inscription vendredi 1 juin 2007 Statut Membre Dernière intervention 1 juin 2007 - 1 juin 2007 à 14:10
MAXIMO71 Messages postés 46 Date d'inscription samedi 25 mars 2006 Statut Membre Derniè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

7 réponses

jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
1 juin 2007 à 14:21
Salut,
colonne1 ne semble pas être initialisé. est ce normal????

@+: Ju£i?n
Pensez: Réponse acceptée
0
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 28
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
0
cs_lermite222 Messages postés 492 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 2 juillet 2012 4
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
0
cs_lermite222 Messages postés 492 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 2 juillet 2012 4
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+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_lermite222 Messages postés 492 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 2 juillet 2012 4
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
0
Satanas09 Messages postés 18 Date d'inscription samedi 2 juin 2007 Statut Membre Dernière intervention 22 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
0
MAXIMO71 Messages postés 46 Date d'inscription samedi 25 mars 2006 Statut Membre Derniè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
0