Vba/Excel/macro ne fonctionnant pas

Résolu
by -  
Polux31 Messages postés 7219 Statut Membre -
Bonjour,

Je suis super débutante en VBA et dans le cadre de mon stage, j'ai quelques macros à générer dont la suivante qui me prend vraiment beaucoup la tête:

J'ai besoin que ma macro parcours une 1ère colonne et dès qu'elle tombe sur une cellule contenant RER, elle va parcourir une 2ème colonne:
Si elle lit 'Marine' sur la ligne en question, alors elle incrémente de 1 la cellule(3,4) dans la feuille 2
si elle lit 'Patrick' elle incrémente de 1 la cellule(3.5)
et sinon elle incrémente de 1 la cellule(3,6)

Voici ce que je propose, mais bien évidemment ça ne marche pas. Si qq pouvait m'aider..

Sub Macro1()

Dim valeur As Integer
Dim i As Byte

For i = 1 To ILines

If (Sheets(Feuil1).Cells(AX, i).Value = "réseau eau réparer") Then

If (Sheets(Feuil1).Cells(AX, i).Value = "Marine") Then
valeur = Worksheets("feuil3").Cells(2, 3).Value + 1
ElseIf (Sheets(Feuil1).Cells(AX, i).Value = "Patrick") Then
valeur = Worksheets("feuil3").Cells(2, 4).Value + 1
Else
valeur = Worksheets("feuil3").Cells(2, 5).Value + 1

End If

End If
Next
End Sub

11 réponses

  1. Freedomsoul
     
    ça ne fonctionne pas ? c'est a dire que rien ne change ?

    Essaie d'afficher des messages pour savoir si ça passe dans tel condition, pour savoir ou est l'erreur précisément :)
    0
    1. by
       
      Ca ne fait rien du tout. J'exécute la macro, j'attends, et en fait, j'attends pour rien parce qu'il ne se passe rien :D
      C'est desepérant. C'est peut-être mon code qui ne passe pas?
      Comment je peux faire afficher les messages d'erreur (question bête j'imagine, mais je débute vraiment)
      0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour

    tu dis que tu parcours une colonne mais tu écris cells(AX,i) et tu parcours ainsi une ligne
    la syntaxe de cells est cells(ligne, colonne) et dans ton cas au aura cells(l,"AX")

    0
  3. Freedomsoul Messages postés 538 Statut Membre 97
     
    bin, il parcourt la colonne en changeant les lignes, logique ^^

    Je crois que je suis perdu ><
    0
  4. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Bonjour,

    Sans trop comprendre ce que tu cherches à faire, juste en lisant le code, la macro ne peut pas fonctionner parce qu'elle a 2 conditions IF pour le contenu de la même cellule :

    If (Sheets(Feuil1).Cells(AX, i).Value = "réseau eau réparer") Then 
    
    If (Sheets(Feuil1).Cells(AX, i).Value = "Marine") Then  
    ...


    Si tu trouves "réseau eau réparer" dans Cells(AX,i), tu ne peux pas y trouver "Marine" ou "Patrick".

    Comme Michel, je trouve la syntaxe étrange et je pense qu'il y a confusion entre les lignes et les colonnes.

    ;o)
    «Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
    Nicolas Boileau
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. by
     
    Je l'ai changé et ça ne marche toujours pas :D

    Est-ce que j'exprime bien le fait que j'utilise des données de la feuil1 et que j'exécute la macro sur la feuil3 ? C'est peut-être là où ça bug?
    0
  7. by
     
    En tout cas merci pour vos réactions, ça le redonne de l'espoir qd j'en trouve
    0
  8. Polux31 Messages postés 7219 Statut Membre 1 204
     
    J'ai regardé un peu mieux :o)

    Pour l'incrémentation il faut faire :

    Worksheets("feuil3").Cells(2, 3).Value = Worksheets("feuil3").Cells(2, 3).Value + 1 


    ;o)
    0
  9. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Re,

    proposition
    Const col As String = "AX"
    Const texto As String = "réseau eau réparer"
    Sub Macro1()
    
    Dim valeur As Integer
    Dim lig As Long, cptr As Byte
    
    With Sheets(1)
         nbre = Application.CountIf(.Columns(col), texto)
         If nbre = 0 Then GoTo vide:
         lig = .Cells.Rows.Count
         For cptr = 1 To nbre
              lig = .Columns(col).Find(texto, .Cells(lig, col), xlValues).Row
              prenom = .Cells(lig, col).Offset(0, 1)
              With Sheets(3)
                   Select Case prenom
                        Case Is = "Marine"
                             valeur = .Cells(3, 2) + 1
                        Case Is = "Patrick"
                             valeur = .Cells(4, 2) + 1
                        Case Else
                             valeur = .Cells(5, 2) + 1
                   End Select
              End With
         Next
    End With
    Exit Sub
    vide:
    MsgBox texto & " n'existe pas dans la colonne " & col, vbCritical
    End Sub
    


    "valeur" aura toujours la m^me valeur pour marine, m^me valeur autre pour patrik, etc ?
    0
  10. by
     
    Mnt que j'y pense, y a qq chose de pas clair dans mon code.
    Qd j'écris la ligne suivante:

    valeur = Worksheets("feuil3").Cells(3, 2).Value + 1

    J'essaie de lui dire d'incrémenter de 1 la cellule (3,2). je devrais peut-être initialiser mes cellules pour qu'il puisse les incrémenter de 1, nn ?

    Dans ce cas, comment je lui dis que le fait qu'elle soit vide veut dire, en fait qu'on démarre à 0
    0
    1. Polux31 Messages postés 7219 Statut Membre 1 204
       
      Je te l'ai juste précisé un peu plus haut, mais bon, ça doit être trop contraignant de tout lire ...
      0
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      polux (bonjour)t'a fourni la méthode
      donc
      .cells(3,2)=.cells(3,2)+1
      valeur = .Cells(3, 2)


      si au départ cells(3,2) est vide cela équivaut à 0
      0
  11. by
     
    Waouh..
    Je pourrais en pleurer tellement je te suis reconnaissante :D :D (je suis dessus depuis 9h du matin et je peux pas rentrer chez moi tant que c'est pas fait)
    Je vais essayer ce que tu me propose!!
    Merciiii
    0
  12. by
     
    C'est pas du tout contraignant, je ne reçois juste pas les réponses à temps :)
    Merci pour vos réponses, je vais retenter le coup pour voir

    Par contre, effectivement valeur n'est pas la même pour tous, j'imagine que ça veut dire qu'il faut que je change ce fragment de code pour pas qu'il y ait confusion
    0
    1. Polux31 Messages postés 7219 Statut Membre 1 204
       
      A vrai dire, valeur ne sert pas ... dans ton bout de code.

      Je ne sais pas si tu t'en sers ailleurs dans le code, mais là, dans ta procédure, valeur ne sert pas.
      0