IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

probleme de boucle if


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 141
    Par défaut probleme de boucle if
    bonjour, je dois corriger un code de mon collegue ,qu 'il a plante en voulant le modifier.
    le comble c'est que je l'ai ecrit et ne m'en souviens plus.
    il reste une petite erreur autour de cette boucle if, mais je ne souviens plus de la synthaxe, quelqu'un pourrait- me donner un coup de main que je passe a autre de chose.
    merci d'avance ;-)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim i As Integer
    Dim j As Integer
     
    For i = 1 To DerCel
     
    If Cells(i, 5).Value < 0 Then
    For j = 1 To Rows(i).Columns(j).Interior.Color = RGB(250, 0, 0)
    ElseIf Cells(i, 6).Value < 0 Then
    For j = 1 To Rows(i).Columns(j).Interior.Color = RGB(200, 100, 100)
    ElseIf Cells(i, 7).Value < 0 Then
    For j = 1 To Rows(i).Columns(j).Interior.Color = RGB(0, 250, 250)
    End If
     
    Next i

  2. #2
    Membre éclairé Avatar de le_dilem
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Avril 2005
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Avril 2005
    Messages : 313
    Par défaut Salut
    Next j ?? non

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Ton code est incompréhensible si tu ne nous dis pas ce qu'il est censé faire...
    Peux-tu préciser ce qu'il devrait réaliser ?

  4. #4
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Bonjour,

    il reste une petite erreur autour de cette boucle if
    Ca existe une boucle if ? On me l'avait bien caché.

    Autrechose ,
    merci de m'expliquer ce qu'est censé faire ce code, car cela me parait complètement dément ce = dans le to d'une boucle sur un integer.
    Doit manquer quelquechose quelquepart.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    For j = 1 To Rows(i).Columns(j).Interior.Color = RGB(250, 0, 0)

  5. #5
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 141
    Par défaut un poeu plus clair
    alors voila le code a labase que jai fini par reconstituer. ce que mon collegue desirait faire c'eteit suprimer les ligne sans couleur
    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
    Private Sub CommandButton1_Click()
     
    Rows(1).Delete
    Dim DerCel As Long
    DerCel = Worksheets("Sheet1").Range("B65536").End(xlUp).Row
     
     
    Dim i As Integer
    Dim j As Integer
    Dim k As Integer
    Dim l As Integer
     
    For i = 1 To DerCel
     
    If Cells(i, 5).Value < 0 Then
    For j = 1 To 9
    Cells(i, j).Interior.Color = RGB(250, 0, 0)
    Next j
    ElseIf Cells(i, 6).Value < 0 Then
    For k = 1 To 9
    Rows(i).Columns(k).Interior.Color = RGB(200, 100, 100)
    Next k
    ElseIf Cells(i, 7).Value < 0 Then
    For l = 1 To 9
    Rows(i).Columns(l).Interior.Color = RGB(0, 250, 250)
    Next l
    ElseIf Cells(i, 8).Value < 0 Then
    For l = 1 To 9
    Rows(i).Columns(l).Interior.Color = RGB(120, 120, 120)
    Next l
     
    End If
     
    Next i
     
     
    End Sub
    ce quil a fait c est rows(i).delete ce qui ne marche pas mais je ne trouve pas de solution

  6. #6
    Membre éclairé Avatar de le_dilem
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Avril 2005
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Avril 2005
    Messages : 313
    Par défaut ok
    il manquait les Next

  7. #7
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 141
    Par défaut ma dernier amelioration
    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
    Private Sub CommandButton1_Click()
     
    Rows(1).Delete
    Dim DerCel As Long
    DerCel = Worksheets("Sheet1").Range("B65536").End(xlUp).Row
     
     
    Dim i As Integer
    Dim j As Integer
    Dim k As Integer
    Dim l As Integer
     
    For i = 1 To DerCel
     
    If Cells(i, 5).Value < 0 Then
    For j = 1 To 9
    Cells(i, j).Interior.Color = RGB(250, 0, 0)
    Next j
    ElseIf Cells(i, 6).Value < 0 Then
    For k = 1 To 9
    Rows(i).Columns(k).Interior.Color = RGB(200, 100, 100)
    Next k
    ElseIf Cells(i, 7).Value < 0 Then
    For l = 1 To 9
    Rows(i).Columns(l).Interior.Color = RGB(0, 250, 250)
    Next l
    ElseIf Cells(i, 8).Value < 0 Then
    For l = 1 To 9
    Rows(i).Columns(l).Interior.Color = RGB(120, 120, 120)
    Next l
     
     
    Else:
     
    End If
     
    Next i
     
     
    End Sub
    ca ne tourne toujours pas bien.. en fait il faudrit que je puis sauvegarder les lignes nin colorier quelquepart et que je les supprime toutes d'un coup hors de la boucle... une idee?

  8. #8
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut ok + 1
    il manquait les Next
    et une clause TO valide pour le FOR.

  9. #9
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    alors voila le code a labase que jai fini par reconstituer. ce que mon collegue desirait faire c'eteit suprimer les ligne sans couleur
    Il n'y a rien dans ton code qui supprime des lignes, ni d'ailleurs de test sur la couleur. Seule la valeur de la cellule est testée.

  10. #10
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 141
    Par défaut oups desole
    ja i vu jai editer le message

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Je réponds à ça
    ce quil a fait c est rows(i).delete ce qui ne marche pas mais je ne trouve pas de solution
    La syntaxe est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rows(i).EntireRow.delete
    Bonne journée

  12. #12
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 141
    Par défaut la solution finale. thanks for votre aide
    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
    Private Sub CommandButton1_Click()
     
    Rows(1).Delete
    Dim DerCel As Long
    DerCel = Worksheets("Sheet1").Range("B65536").End(xlUp).Row
    Rows(DerCel + 1).Interior.Color = RGB(0, 0, 0)
     
    Dim i As Integer
    Dim j As Integer
    Dim k As Integer
    Dim l As Integer
     
    For i = 1 To DerCel
     
    If Cells(i, 5).Value < 0 Then
    For j = 1 To 9
    Cells(i, j).Interior.Color = RGB(250, 0, 0)
    Next j
    ElseIf Cells(i, 6).Value < 0 Then
    For k = 1 To 9
    Rows(i).Columns(k).Interior.Color = RGB(200, 100, 100)
    Next k
    ElseIf Cells(i, 7).Value < 0 Then
    For l = 1 To 9
    Rows(i).Columns(l).Interior.Color = RGB(0, 250, 250)
    Next l
    ElseIf Cells(i, 8).Value < 0 Then
    For l = 1 To 9
    Rows(i).Columns(l).Interior.Color = RGB(120, 120, 120)
    Next l
    ElseIf Rows(i).Interior.Color = RGB(0, 0, 0) Then Exit Sub
    Else: Rows(i).EntireRow.Delete
    i = i - 1
    DerCel = DerCel - 1
     
    End If
     
    Next i

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme de boucle a s arracher les cheuveux
    Par calimero642 dans le forum Langage
    Réponses: 6
    Dernier message: 16/03/2006, 14h44
  2. Probleme de boucle avec des processus sous UNIX
    Par sebastieng dans le forum POSIX
    Réponses: 6
    Dernier message: 15/10/2005, 18h57
  3. [Language]Problème de boucle
    Par marc_dd dans le forum Langage
    Réponses: 11
    Dernier message: 06/10/2005, 14h24
  4. Problem de boucle.....
    Par skad dans le forum C++
    Réponses: 6
    Dernier message: 29/09/2005, 16h28
  5. [C#] Probleme de boucle for et random
    Par Freeman166 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 09/01/2005, 14h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo