[Résolu] [VBA] Comment faire une boucle de ce code au lieu de réecrire
Dernière réponse : dans Programmation
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 :
ps les 2 zones semaine1 et semaine2 sont deja défini
ce que je souhaite faire c'est que au lieu de faire 2 fois le Range et le Selection.FormulaArray donc un truc de ce genre
le seul probleme c'est que ce code marche pas (erreur ) alors que dois je changer??
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 :
Range("A2").Select
'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)"
ps les 2 zones semaine1 et semaine2 sont deja défini
ce que je souhaite faire c'est que au lieu de faire 2 fois le Range et le Selection.FormulaArray donc un truc de ce genre
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 = _
"=INDEX(semaine &i,MAX(ROW(semaine &i)*NOT(ISBLANK(semaine &i)))-ROW(semaine &i )+1)"
Next i
le seul probleme c'est que ce code marche pas (erreur ) alors que dois je changer??
Autres pages sur : resolu vba boucle code lieu reecrire
Lassé par la pub ? Créez un compte
A revoir : les guillemets.
Tu veux écrireou?
Dans ce dernier cas, lorsque tu remets tout entre guillemets, n'oublie pas de doubler les guillemets à l'intérieur. T'as rien compris ? Moi non plus quansd je me relis, alors essaie ça, pour voir :
"=INDEX(""semaine ""& i,MAX(ROW(""semaine"" & i)*NOT(ISBLANK(""semaine"" & i)))-ROW(""semaine"" & i )+1)"
Remarque subsidiaire.
Tu écrisTu peux écrire Ainsi la cellule sélectionnée ne change pas. Mais c'est peut-être ce que tu veux.
Puisque tu commences : bon courage.
Tu veux écrire
Citation :
=INDEX(semaine &i .. Citation :
=INDEX("semaine" & i ..Dans ce dernier cas, lorsque tu remets tout entre guillemets, n'oublie pas de doubler les guillemets à l'intérieur. T'as rien compris ? Moi non plus quansd je me relis, alors essaie ça, pour voir :
Citation :
.FormulaArray = _ "=INDEX(""semaine ""& i,MAX(ROW(""semaine"" & i)*NOT(ISBLANK(""semaine"" & i)))-ROW(""semaine"" & i )+1)"
Remarque subsidiaire.
Tu écris
Citation :
Range (..).Select Selection.FormulaArray = ...Citation :
Range (..).FormulaArray = ...Puisque tu commences : bon courage.
semaineN c'est le nom des différente zone
d'abord semaine1 puis semaine2
j'ai aussi essayé de mettre une chaine de caractere qui prend la valeurs de semaine1 puis 2 :
et je met sem dans mon index au lieu de semaine :
mais ca marche pas non plus deja ca met plus d'erreur c'est un progres mais ca me met comme résultat #NOM.
il doit pas reconnaitre le sem
d'abord semaine1 puis semaine2
j'ai aussi essayé de mettre une chaine de caractere qui prend la valeurs de semaine1 puis 2 :
sem = "semaine" & i
et je met sem dans mon index au lieu de semaine :
Selection.FormulaArray = _
"=INDEX(sem,MAX(ROW(sem)*NOT(ISBLANK(sem)))-ROW(sem)+1)"
mais ca marche pas non plus deja ca met plus d'erreur c'est un progres mais ca me met comme résultat #NOM.
il doit pas reconnaitre le sem
On m'a donné la réponse sur un autre forum (je vais pas faire de pub je sais pas si on a le droit )
Bref il fallait une fonction:
puis mettre dans la macro :
Bref il fallait une fonction:
Function MaFormule(st As String) As String
MaFormule = "=INDEX(" & st & ",MAX(ROW(" & st & ")*NOT(ISBLANK(" & st & ")))-ROW(" & st & ")+1)"
End Function
puis mettre dans la macro :
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
Lassé par la pub ? Créez un compte
- Contenus similaires :
Tags :
- ForumFaire un boucle avec excel
- ForumFaire une boucle rj45
- ForumFaire une boucle sous exel
- ForumFaire une boucle en vbs
- ForumComment faire un graphiques vba code
- ForumComment faire remplacer dans code maccro
- ForumComment faire pour dã bloquer code administrateur
- ForumAccess vba boucle
- ForumVba copie en boucle
- ForumVba checkbox boucle
- Voir plus