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 -
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
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
-
Bonjour,
Remplacer 100 par dernière ligne :
https://forums.commentcamarche.net/forum/affich-37622001-vba-detection-de-cellule-vide-ligne-colonnne
-
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-
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. 😊
-
-
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. 😊
-
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.