Problème de code - remplir une colonne 3 conditions

Résolu/Fermé
saxo91 Messages postés 33 Date d'inscription lundi 19 octobre 2015 Statut Membre Dernière intervention 17 octobre 2023 - 10 oct. 2016 à 14:50
saxo91 Messages postés 33 Date d'inscription lundi 19 octobre 2015 Statut Membre Dernière intervention 17 octobre 2023 - 11 oct. 2016 à 05:09
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
A voir également:

4 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
10 oct. 2016 à 15:15
0
saxo91 Messages postés 33 Date d'inscription lundi 19 octobre 2015 Statut Membre Dernière intervention 17 octobre 2023 1
10 oct. 2016 à 16:50
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
 
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
Utilisateur anonyme
10 oct. 2016 à 17:09
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
saxo91 Messages postés 33 Date d'inscription lundi 19 octobre 2015 Statut Membre Dernière intervention 17 octobre 2023 1
11 oct. 2016 à 05:09
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