Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Dernier enregistrement

3 réponses
Avatar
Gildo
Bonjour,
j’ai une routine qui s’exécute jusqu’à ce qu’elle trouve une cellule « temp
» vide sur une ligne donnée
Do While temp <> ""
mon problème du jour c’est que maintenant je peux avoir des cellules vides
suivies de cellules renseignées, je cherche donc à exécuter ma routine tant
qu’il y a des enregistrements dans ma ligne et que celle-ci s’arrête au
dernier enregistrement.
Comment faire, je ne trouve pas la soluce ?
Merci d’avance pour vos suggestions.

3 réponses

Avatar
AV
Change de type de boucle :

Sub zzz()
For Each c In Range("A1", [A65536].End(3))
If c <> "" Then MsgBox c.Address
Next
End Sub

AV
Avatar
Gildo

Change de type de boucle :

Sub zzz()
For Each c In Range("A1", [A65536].End(3))
If c <> "" Then MsgBox c.Address
Next
End Sub

AV


Merci pour cette réponse


le souci est que la ligne concernée est flottante
voir début du code
Sub calcul_delta_01()
Dim c As Integer
' cherche la valeur de besoin dans "Bilan ch-cap SPE01sem" (pour la premiere
cellule)
GEF = "GEF.xls"
feuille_GEF = "Bilan ch-cap SPE01sem"
With Worksheets(feuille_GEF).Select
With Worksheets(feuille_GEF).Range("a1:a200")
Set f = .Find(Range("besoin01").Activate, LookIn:=xlValues)
temp = ActiveCell.Offset(0, a).Value
End With
End With

a = 6
b = 3
c = 2
Max = 4
Do While temp <> "" 'on fait la boucle tant que la valeur de besoin
("temp" dans ce cas) est <> ""
' cherche encore la valeur de besoin dans "Bilan ch-cap SPE01sem"
'(pour les cellules suivantes) pour a = a + 3 à chaques boucles
GEF = "GEF.xls"
feuille_GEF = "Bilan ch-cap SPE01sem"
With Worksheets(feuille_GEF).Select
With Worksheets(feuille_GEF).Range("a1:a200")
Set f = .Find(Range("besoin01").Activate,
LookIn:=xlValues)
temp = ActiveCell.Offset(0, a).Value
End With
End With
' stockage des valeurs des cellules de "Bilan ch-cap
SPE01sem" pour la cellule besoin
'trouvée
Etc ....


Avatar
AV
le souci est que la ligne concernée est flottante


Je suppose que tu veux dire la 1° ligne où doit débuter la recherche ?
Un coup de find (ou Match) pour récupérer la ligne ou la cellule

laPremLigne= .Find(Range("besoin01").Activate, LookIn:=xlValues).row

Ce qui donnera :

For Each c In Range("A" &laPremLigne, [A65536].End(3))
If c <> "" Then MsgBox c.Address 'ou autre instruction
Next

AV