[VBA][Excel] Comment faire pour faire une boucle?
Bonjour je suis débutant en VBA et je dois faire des macro afin d'automatisé un certain nombre de chose
DOnc je fais un code qui fais plusieur fois la meme chose et j'aimerais savoir comment faire pour faire une boucle ?
voici mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
'recherche de la derniere case non vide correspondant à la zone "semaine1"
Selection.FormulaArray = _
"=INDEX(semaine1,MAX(ROW(semaine1)*NOT(ISBLANK(semaine1)))-ROW(semaine1)+1)"
'range le résultat de la derniere case non vide correspondant à la zone "semaine2" en A3
Range("A3").Select
'recherche de la derniere case non vide correspondant à la zone "semaine2"
Selection.FormulaArray = _
"=INDEX(semaine2,MAX(ROW(semaine2)*NOT(ISBLANK(semaine2)))-ROW(semaine2)+1)" |
bien sur les 2 zones qui s'appelent semaine1 et semaine2 ont déjà été défini
Re: Comment faire une boucle de ce code au lieu de l'ecrire
Citation:
Envoyé par Nom
Bonjour je suis débutant en VBA et je dois faire des macro afin d'automatisé un certain nombre de chose
DOnc je fais un code qui fais plusieur fois la meme chose et j'aimerais savoir comment faire pour faire une boucle ?
voici mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
'recherche de la derniere case non vide correspondant à la zone "semaine1"
Selection.FormulaArray = _
"=INDEX(semaine1,MAX(ROW(semaine1)*NOT(ISBLANK(semaine1)))-ROW(semaine1)+1)"
'range le résultat de la derniere case non vide correspondant à la zone "semaine2" en A3
Range("A3").Select
'recherche de la derniere case non vide correspondant à la zone "semaine2"
Selection.FormulaArray = _
"=INDEX(semaine2,MAX(ROW(semaine2)*NOT(ISBLANK(semaine2)))-ROW(semaine2)+1)" |
bien sur les 2 zones qui s'appelent semaine1 et semaine2 ont déjà été défini
J'ai pas bien compris la question ...que ve tu que fasse ta boucle ...
tu est sur que tu ne ve pas plutot une fonction ...?
Code:
1 2 3
| function MaFormule (st as string) as string
Maformule = "=INDEX(" & st & ",MAX(ROW(" & st & ")*NOT(ISBLANK(" & st & ")))-ROW(" & st & ")+1)"
end function |
et ensuite tu fais :
Code:
Selection.FormulaArray = Maformule("Semaine1")
:roll: :wink:
comment faire une boucle au lieu de tout réécrir?
Bonjour je viens d'arriver au bureau et la apres avoir voulu integrer d'autre chose à ma macro j'me suis dis il vaut mieux retester si tout marche bien et la vous avez devinez ca marche plus
je comprend pas j'ai même fais un nouveau classeur avec juste la macro mais ca marche plus
pourtant j'ai rien changer ! enfin je crois pas :roll:
bref je vous explique mon probleme actuel :
lorsque j'ai des info au niveau de la semaine 1 et 2 tout marche bien mais si les cases sont vides ca me retourne #valeur#
Avant ca le faisait pas ! si c'etait vide ca me renvoyai rien
la vraiment je comprend pas
je sais pas trop ou se situe l'erreur donc je remet tout le code
si quelqu'un peut m'aider
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
Sub Macro1()
Dim i As Integer
'definition de la zone correspondant à la semaine1
ActiveWorkbook.Names.Add Name:="semaine1", RefersToR1C1:= _
"=Feuil1!R3C2:R6C2"
'definition de la zone correspondant à la semaine 2
ActiveWorkbook.Names.Add Name:="semaine2", RefersToR1C1:= _
"=Feuil1!R9C2:R13C2"
'changement de feuille
Sheets("Feuil2").Select
For i = 1 To 2
'range le résultat de la derniere case non vide correspondant à la zone "semaineX" en A(x+1) ex semaine1 en A2
Range("A" & (i + 1)).Select
'recherche de la derniere case non vide correspondant à la zone "semaineX"
Selection.FormulaArray = MaFormule("Semaine" & i)
Next i
'definition de la zone correspondant à dernier_vide
ActiveWorkbook.Names.Add Name:="dernier_vide", RefersToR1C1:= _
"=Feuil2!R2C1:R9C1"
'range le résultat de la derniere case non vide correspondant à la zone "dernier_vide" en B2
Range("B2").Select
'recherche de la derniere case non vide correspondant à la zone "dernier_vide"
Selection.FormulaArray = _
"=INDEX(dernier_vide,MAX(ROW(dernier_vide)*NOT(ISBLANK(dernier_vide)))-ROW(dernier_vide)+1)"
'changement de feuille
Sheets("Feuil1").Select
End Sub
Function MaFormule(st As String) As String
MaFormule = "=INDEX(" & st & ",MAX(ROW(" & st & ")*NOT(ISBLANK(" & st & ")))-ROW(" & st & ")+1)"
End Function |