Next sans for ...le grand classique est de retour

Bonjour a tous je viens d'écrire une macro très courte

je dispose de données en colonne F et G que je souhaite comparé depuis la ligne 51 à la fin ( la fin varie de feuilles en feuilles et ce nombre je l'ai j'ai déjà calculer sur une feuilles a part appelé "nombre total" ( en colonne B commençant ligne 2 ) . J'ai donc déclarer mes variables , j'ai posé i allant de 2 à 5 car sur la feuille NOMBRETOTAL le nombre de ligne est affiché de B2 à B5 , j'ai ensuite posé L comme la valeur variant avec i de la cellule B de la feuille NOMBRETOTAL . Je veux donc comparer et si la valeur en f est plus grande que celle en g ( par exemple F55>G55 alors afficher en H55 "V"). Je ne comprend pas ce qui bloque ( vba me dit "next sans for") j'ai essayé de changer les next de place ainsi que le end if et rien je ne trouve pas la bonne combinaison ni la raison de ce message ( et j'ignore au passage si ma macro va fonctionner ) . Auriez-vous une idée ? D'ailleurs je ne me souviens plus comment on peut utiliser un espion ( je crois que ca s'appel ainsi) pour dérouler le code jusqu'a une ligne précise voir si cela fonctionne ?

Merci à vous tous !

Sub decision()

Dim i, j, k, L As Integer

Dim sh As Worksheet

For Each sh In ThisWorkbook.Worksheets

If sh.Name <> "NOMBRETOTAL" Then

sh.Activate

For i = 2 To 5

L = Sheets("NOMBRETOTAL").Cells("B,i").Value

For j = 51 To L

If Cells("F,j").Value > Cells("G,j").Value Then

Cells("H,j").Value = "V"

Else

Cells("H,j").Value = "R"

Next j

Next L

Next i

End if

End Sub

Bonjour,

Si tu construit le code en implémentant, tu as plus facile à voir les erreurs

Sub decision()
Dim i%, j%, k%
Dim L
Dim sh As Worksheet
  For Each sh In ThisWorkbook.Worksheets
    If sh.Name <> "NOMBRETOTAL" Then
    sh.Activate
      For i = 2 To 5
        L = Sheets("NOMBRETOTAL").Cells(i, "B").Value
          For j = 51 To L
            If Cells(j,"F").Value > Cells(j, "G").Value Then
              Cells(j, "H").Value = "V"
            Else
              Cells(j, "H").Value = "R"
          End If
        Next j
      Next i
    End If
  Next sh
End Sub

Ahh merci en effet je n'ai pas l'habitude de structurer mon travail cependant vba me dit pour L qu'il y' a une erreur 5 ( "argument ou appel de procédure incorrect" ) j'ignore ce que cela signifie ( par ailleurs je viens de me rendre compte que j'avais laissé dans DIM k qui ne sert a rien j'ai oublié de le retirer suite à mes précédentes tentatives")

L = Sheets("NOMBRETOTAL").Cells(i, "B").Value

Merci de m'avoir aidé à trouver la solution de ce premier problème !

Re

Reprend mon code, j'ai fait une modif dessus est normalement il est fonctionnel

Re

Reprend mon code, j'ai fait une modif dessus est normalement il est fonctionnel

oui merci en effet je n'avais pas fait attention à la modification des cells

si je comprend bien si je souhaite faire varier j dans cells je en dois pas le mettre entre guillemets ? Merci en tout cas !!!

re,

avec Cells(ligne,colonne) et comme la ligne est une variable, pas de guillemet

Je comprend mieux ! Merci vous etez au top ! bonne soirée !

Bonjour MelaGrou,

Je te propose d'essayer ce code VBA :

Option Explicit

Sub decision()
  Dim sh As Worksheet, L&, i&, j&
  Application.ScreenUpdating = False
  For Each sh In ThisWorkbook.Worksheets
    If sh.Name <> "NOMBRETOTAL" Then
      sh.Activate
      For i = 2 To 5
        L = Worksheets("NOMBRETOTAL").Cells(i, 2)
        For j = 51 To L
          With Cells(j, 6)
            .Offset(, 2) = Chr$(86 + 4 * (.Value <= .Offset(, 1)))
          End With
        Next j
      Next i
    End If
  Next sh
End Sub

Merci de me donner ton avis.

dhany

Rechercher des sujets similaires à "next grand classique retour"