[résolu] Comment faire une boucle de ce code au lieu de l'ecrir

Comment faire une boucle de ce code au lieu de l'ecrir [résolu] - VB/VBA/VBS - Programmation

Marsh Posté le 12-12-2005 à 10:01:13    

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. 'recherche de la derniere case non vide correspondant à la zone "semaine1"
  2.     Selection.FormulaArray = _
  3.         "=INDEX(semaine1,MAX(ROW(semaine1)*NOT(ISBLANK(semaine1)))-ROW(semaine1)+1)"
  4.        
  5. 'range le résultat de la derniere case non vide correspondant à la zone "semaine2" en A3
  6.     Range("A3" ).Select
  7.    
  8. 'recherche de la derniere case non vide correspondant à la zone "semaine2"
  9.     Selection.FormulaArray = _
  10.         "=INDEX(semaine2,MAX(ROW(semaine2)*NOT(ISBLANK(semaine2)))-ROW(semaine2)+1)"


 
bien sur les zones qui s'appelent semaine1 et semaine2 ont déja été défini


Message édité par Angelo38 le 20-12-2005 à 16:16:06
Reply

Marsh Posté le 12-12-2005 à 10:01:13   

Reply

Marsh Posté le 12-12-2005 à 15:50:30    

Personne pour m'aider ???
 
J'ai deja fait ca si ca peut vous faire comprendre ce que je veux  
 

Code :
  1. For i = 1 To 2
  2. sem = "semaine" & i
  3. 'range le résultat de la derniere case non vide correspondant à la zone "semaine1" en A2
  4.     Range("A" & (i + 1)).Select
  5.    
  6. 'recherche de la derniere case non vide correspondant à la zone "semaine1"
  7.     Selection.FormulaArray = _
  8.         "=INDEX(sem1,MAX(ROW(sem)*NOT(ISBLANK(sem)))-ROW(sem)+1)"
  9. 'recherche de la derniere case non vide correspondant à la zone "semaine1"
  10.     'Selection.FormulaArray = _
  11.      '   "=INDEX(semaine2,MAX(ROW(semaine2)*NOT(ISBLANK(semaine2)))-ROW(semaine2)+1)"
  12. Next i


 
le probleme est que il reconnait pas le sem donc le resultat est #NOM  
 

Reply

Marsh Posté le 12-12-2005 à 16:27:54    

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 )  
si ca interesse quelqu'un  
Bref il fallait une fonction:
 

Code :
  1. Function MaFormule(st As String) As String
  2. MaFormule = "=INDEX(" & st & ",MAX(ROW(" & st & " )*NOT(ISBLANK(" & st & " )))-ROW(" & st & " )+1)"
  3. End Function


 
puis mettre dans la macro :

Code :
  1. For i = 1 To 2
  2. 'range le résultat de la derniere case non vide correspondant à la zone "semaineX" en A(x+1)  ex semaine1 en A2
  3.     Range("A" & (i + 1)).Select
  4.    
  5. 'recherche de la derniere case non vide correspondant à la zone "semaineX"
  6.     Selection.FormulaArray = MaFormule("Semaine" & i)
  7. Next i

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed