Problème de code - remplir une colonne 3 conditions

Résolu
Bonjour à tous,

Petit problème mais j'aimerais comprendre une fois pour toute ... car j'arrive pas à comprendre.

Ce code que j'ai pécher fonctionne très bien et je le comprends :
Sub entete()

For i = 1 To 100
If Cells(i, 9).Value = "" Then Cells(i, 1).Value = "E"
Next i
For i = 1 To 100
If Cells(i, 9).Value > 0 Then Cells(i, 1).Value = "D"
Next i

End Sub

Il me positionne bien les E et des D là ou il faut ... jusqu'à la 100ème ligne.
C'est ce que je lui dis de faire.

Mais ce que je voudrais lui demander c'est de le faire tant qu'il y a des lignes ...

Quelqu'un peut m'aider et m'expliquer ?

Merci d'avance;
Louisa

4 réponses

  1. Bonjour Alban,

    Parfait, ça fonctionne parfaitement ! je te remercie, car j'a compris !!

    Et plus encore pour les explications.
    Cela ma forcé a retourner voir la table de caractère code ...

    Je te remercie encore !

    Bonne journée.
    0
    1. Bonjour Louisa,

      Je te propose ce code VBA :

      
      Option Explicit
      
      Sub entete()
      
        Dim dlig As Long, lig As Long
      
        ' calcul de la dernière ligne, selon la colonne I
        dlig = Range("I" & Rows.Count).End(xlUp).Row
      
        For lig = 1 To dlig
          Cells(lig, 1) = Chr$(69 + (Cells(lig, 9) > 0))
        Next lig
      
      End Sub
      
      

      Cas 1 : si Cells(lig, 9) > 0 est vrai, valeur retournée : -1 ;
      donc 69 + (-1) = 69 - 1 = 68 et Chr$(68) retourne "D".

      Cas 2 : si Cells(lig, 9) > 0 est faux, valeur retournée : 0 ;
      donc 69 + 0 = 69 et Chr$(69) retourne "E".

      Tu auras noté, bien sûr, que :

      a) Une seule boucle For .. Next est nécessaire.
      b) Un seul test "> 0" est nécessaire.

      Si ton problème est réglé, merci d'aller en haut de page
      pour cliquer sur « Marquer comme résolu ».

      Cordialement.  😊
       
      0
      1. Bonjour cs_Le pivert

        Merci de ta réponse, je suis allé lire et j'y arrive presque mais je ne comprend pas pourquoi il s'arrête avant la fin.

        Mon code :
        Sub entete()

        Dim DernCol As Integer
        DernCol = Cells(4, Cells.Columns.Count).End(xlToLeft).Column

        For i = 1 To DernCol
        If Cells(i, 4).Value = "" Then Cells(i, 1).Value = "E"
        Next i
        For i = 1 To DernCol
        If Cells(i, 4).Value > 0 Then Cells(i, 1).Value = "D"
        Next i

        End Sub

        Il s’arrête à la 17ème ligne ...
        Alors que la dernière est la 22ème ligne

        Si tu as un truc pour m'orienter ...

        Merci
        0
        1.  
          Bonjour Louisa,

          Tu utilises DernCol pour Dernière Colonne ! et .Column pour Colonne !
          Alors qu'il te faut la dernière ligne ! Regardes plutôt mon message #3
          ci-dessous. Cordialement.  😊

          PS : Bonjour à cs_Le Pivert en passant. Cordialement.  😊
           
          0