Application de la boucle sur cellule non-vide
Bonjour.
J'ai un code et je veux que la formule s'applique seulement si la valeur contenue dans la variable (X) est non-vide. Sinon on passe a next X.
Voici le code:
Sub MAJ_FOR()
Dim WS_Count As Integer
Dim I As Integer
WS_Count = ActiveWorkbook.Worksheets.Count
'**************************
'Début de la loop
'*******************************
For I = 1 To WS_Count
'*********************************
'MAj champs identification de la station & MAJ strate arborescente
'**********************************
Dim x As Integer
For x = 85 To 101
Worksheets("FOR").Activate
Cells(Rows.Count, 1).End(xlUp)(2).Select
ActiveCell.Value = Worksheets(I).Range("d3").Value 'A:station
ActiveCell.Offset(0, 1).Activate 'déplacement d'une colonne
ActiveCell.Value = Worksheets(I).Range("B83").Value 'B: type de strate
ActiveCell.Offset(0, 1).Activate 'déplacement d'une colonne
ActiveCell.Value = Worksheets(I).Range("b" & x).Value 'c:essence_1
ActiveCell.Offset(0, 1).Activate 'déplacement d'une colonne
ActiveCell.Value = Worksheets(I).Range("o" & x).Value 'd:essence_1latin_1
ActiveCell.Offset(0, 1).Activate 'déplacement d'une colonne
ActiveCell.Value = Worksheets(I).Range("aa" & x).Value 'e :absolu
ActiveCell.Offset(0, 1).Activate 'déplacement d'une colonne
ActiveCell.Value = Worksheets(I).Range("ae" & x).Value 'f :relatif
ActiveCell.Offset(0, 1).Activate 'déplacement d'une colonne
ActiveCell.Value = Worksheets(I).Range("ai" & x).Value 'G :dominante
Worksheets("FOR").Activate
Cells(Rows.Count, 1).End(xlUp)(2).Select 'Retour à la colonne A
Next x
Next I
End Sub
Donc s'il n'y a rien à l'intérieur de B89, par exemple, on passe directement à B90 et ainsi de suite.
Merci de votre support. C'est très apprécié. J'avance dans mon VBA grace à vous tous :)
Salut,
h2so4 t'a dit hier de fournir un fichier exemple avec tes questions ! Ce serait quant même bien plus facile de t'aider. Enfin, si c'est bien ce que tu souhaites
Amicalement.
Bonjour Labaie, Salut Yvouille,
Voici un essai avec une condition au sein de la boucle et une possibilité de sortie dès la première cellule en B vide :
Sub MAJ_FOR()
dim ws as worksheet
Dim x As Integer
dim nl&
For each ws in worksheets
For x = 85 To 101
with Worksheets("FOR")
if ws.Range("b" & x).value <> "" then
nl = .Cells(.Rows.Count, 1).End(xlUp)(2).row
.cells(nl, 1).value = ws.Range("d3").Value 'A:station
.cells(nl, 2).value = ws.Range("B83").Value 'B: type de strate
.cells(nl, 3).value = ws.Range("b" & x).Value 'c:essence_1
.cells(nl, 4).value = ws.Range("o" & x).Value 'd:essence_1latin_1
.cells(nl, 5).value = ws.Range("aa" & x).Value 'e :absolu
.cells(nl, 6).value = ws.Range("ae" & x).Value 'f :relatif
.cells(nl, 7).value = ws.Range("ai" & x).Value 'G :dominante
'else
'exit for
end if
end with
Next x
Next ws
End Sub
Cdlt,
Bonjour,
3 GB : tu t'es un peu perdu entre n1 et d1...
Avec cette solution tu perds tout le bénéfice de l'optimisation que je t'ai faite hier :
Modifier le code d'hier comme suit
For x = 85 To 96
if WsF.Cells(iR, 2) <> "" then
WsF.Cells(iR, 1) = .Range("D3") 'A:station
WsF.Cells(iR, 2) = .Range("B83") 'B: type de strate
WsF.Cells(iR, 3) = .Range("B" & x) 'c:essence_1
WsF.Cells(iR, 4) = .Range("O" & x) 'd:essence_1latin_1
WsF.Cells(iR, 5) = .Range("AA" & x) 'e :absolu
WsF.Cells(iR, 6) = .Range("AE" & x) 'f :relatif
WsF.Cells(iR, 7) = .Range("AI" & x) 'G :dominante
iR = iR + 1
End if
Next
EDIT : Il faut à tout prix renoncer à tous ces .Activate, Select, Offset
Inutile de créer un nouveau sujet quand il s'agit du prolongement d'une même question...
A+
Salut galopin,
Ce sont des "L" mais oui, en effet, je me suis perdu dans mes variables