Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1046 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1264294
Angelo38
Posté le 12-12-2005 à 10:01:13  profilanswer
 

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
mood
Publicité
Posté le 12-12-2005 à 10:01:13  profilanswer
 

n°1264633
Angelo38
Posté le 12-12-2005 à 15:50:30  profilanswer
 

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  
 

n°1264673
Angelo38
Posté le 12-12-2005 à 16:27:54  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 

Sujets relatifs
(vb6] copie de feuille avec formatage [ résolu ]Ajouter 15 jours à une date [resolu]
[HTML/CSS] Probleme incomprehensible [RESOLU][VB6] traitement sur tableau excel très lent [résolu]
[resolu][VBE] Faire une macro pour copier un module ss excel[C#][Winforms] [Resolu] Centrer automatiquement un panel dans une Form
Comment vérouiller une cellule par un code?Créer un fichier vide en C. [Résolu]
Python/unicode: écrire de gauche à droite/de droite à gauche [résolu][Concours de code]Echauffement pour l'IOCCC
Plus de sujets relatifs à : [résolu] Comment faire une boucle de ce code au lieu de l'ecrir


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR