Problème de code - remplir une colonne 3 conditions

Résolu
saxo91 Messages postés 29 Date d'inscription   Statut Membre Dernière intervention   -  
saxo91 Messages postés 29 Date d'inscription   Statut Membre Dernière intervention   -
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. saxo91 Messages postés 29 Date d'inscription   Statut Membre Dernière intervention   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. Utilisateur anonyme
       
       
      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
  2. Utilisateur anonyme
     
    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
  3. saxo91 Messages postés 29 Date d'inscription   Statut Membre Dernière intervention   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