VBA - Comment corriger ma boucle pour quelle fonctionne? [Résolu]

AHB

XLDnaute Nouveau
Bonjour à tous,

J'ai écrit dans le fichier excel ci-joint une macro.
Celle-ci fonctionne très bien... sauf la boucle!!!

Je ne comprends absolument pas pourquoi :confused:

J'ai lu plein de site, plein de forum, essayé différentes méthodes, mais j'arrive toujours au même résultat : le travail est fait pour le 1ère boucle, mais pas pour les suivantes.

Pour explication de ce que doit faire mon fichier :
celui-ci va ouvrir un fichier modèle qui se trouve à un endroit bien précis, l'enregistre à l'endroit noté à ma ligne 7 ($A$4;"\";"A7""\";"B7""\";"C7";"\") et le nomme comme noté en D7.
il appelle une macro de ce fichier et réenregistre celui-ci.

Ensuite, il est sensé recommencer pour les infos ligne 8, puis 9, puis 10, etc.

MAIS, ça ne fonctionne que pour la ligne 7.

Pouvez vous me dire ou se trouve mon erreur?

A l'avance merci,

AHB (Sybille)
 

Pièces jointes

  • Macro rapide - Bilan Activité.xls
    44 KB · Affichages: 31
  • Macro rapide - Bilan Activité.xls
    44 KB · Affichages: 33
  • Macro rapide - Bilan Activité.xls
    44 KB · Affichages: 35
Dernière édition:

Roland_M

XLDnaute Barbatruc
Re : VBA - Comment corriger ma boucle pour quelle fonctionne?

bonjour,

et dans cet ordre !?

Code:
Sub TousBilansActivite()

' LES VARIABLES
    Dim x As Integer
    Dim NomService As String
    Dim NomUO As String
    Dim NomDossier As String
    Dim Fichier As String
        
'La variable x va successivement prendre les valeurs 0 à "Nbre de Ligne"
    For x = 0 To 6

    NomService = Range("A7").Offset(x, 0).Value
    NomUO = Range("B7").Offset(x, 0).Value
    NomDossier = Range("C7").Offset(x, 0).Value
    Fichier = Range("D7").Offset(x, 0).Value
    CheminModele = "N:\PICARDIE\EXP\PIVO\RAPPORTS\Modèles Rapports\Bilan Activité"
    FichierModele = "Bilan activité - Modèle.xlsm"
    Dim Chemin As String, FichierExportSemaine As String
    Chemin = Range("$A$4") & "\" & NomService & "\" & NomUO & "\" & NomDossier & "\"
    LancerToutesMacros = "'" & Fichier & "'!TteMacro"

'CREATION DU BILAN D'ACTIVITE

    ' Ouverture du modèle pour MISE A JOUR DES DONNEES
    Workbooks.Open CheminModele & FichierModele
    ' Sauvegarde sous le bon fichier et le bon nom
    ActiveWorkbook.SaveAs Filename:=Chemin & Fichier
    ' Démarrage des macros du fichier ouvert
    ' Application.Run ("'Bilan Activité - 19SA10 - UO Ouest Oise - S29.xlsm'!TteMacro")
    Application.Run (LancerToutesMacros)
    ' Save et Fermeture du fichier
    ActiveWorkbook.Close SaveChanges:=True
      
'FIN DE LA BOUCLE
    Next x
    
End Sub
 
Dernière édition:

AHB

XLDnaute Nouveau
Re : VBA - Comment corriger ma boucle pour quelle fonctionne?

Oups...:eek:

Désolé, fatigué!! effectivement, je ne l'avais pas vu...
Donc ce coup-ci, je l'ai bien repéré et modifié!!!

Mais, ça ne marche toujours pas, désolé :S

De mon coté, je cherche d'autres solutions en vain...
En même temps, ça fait des jours que je cherche.
 

Roland_M

XLDnaute Barbatruc
Re : VBA - Comment corriger ma boucle pour quelle fonctionne?

re

es-tu certain que ça ne vient pas de: Application.Run (LancerToutesMacros)

les codes exécutés dans cet appel ne seraient pas en cause ?


EDIT
avec mon code, faire un essai en mettant en rem ceci> Application.Run (LancerToutesMacros)
pour voir si ta boucle tourne !?
 
Dernière édition:

AHB

XLDnaute Nouveau
Re : VBA - Comment corriger ma boucle pour quelle fonctionne?

Ahhh zut, tu as raison,

j'ai retiré cette ligne et ça fonctionne!! :S

Il ne reste plus qu'a trouver pourquoi faire appel à ma macro "LancerToutesMacros" bloque ma boucle!

Aie, j'ai pas fini!! :S

Mais déjà un très grand merci pour ça, j'avoue que j'étais dans une impasse, la, je commence à revoir où chercher.

PS : on peut faire appel à une autre macro dans une boucle normalement non?
 

AHB

XLDnaute Nouveau
Re : VBA - Comment corriger ma boucle pour quelle fonctionne?

d'accord,

Voici ci-joint le fichier contenant la macro rebelle!

Pour le moment, mes tests font un flop

je me suis dit que vu que je fait "appel" à une macro, il faut peut être que je "ferme" cette macro à la fin...

(ça doit se voir que je n'ai pas eu de cours non?)
 

Pièces jointes

  • Copie de Bilan activité - Modèle.xlsm
    72.2 KB · Affichages: 40

Roland_M

XLDnaute Barbatruc
Re : VBA - Comment corriger ma boucle pour quelle fonctionne?

salut DoubleZero !

ça avance et je crois avoir trouvé son erreur !?
pour l'instant il fait des essais ...

avec ceci:

commence par mettre en rem la ligne suivante en fin de macro: ActiveWindow.Close
et remplacer par: ActiveWorkbook.Close
 

AHB

XLDnaute Nouveau
Re : VBA - Comment corriger ma boucle pour quelle fonctionne?

Bonjour,

j'ai bien remplacé la ligne suivante en fin de macro: ActiveWindow.Close
par: ActiveWorkbook.Close

Mais ma macro s’arrête toujours à la fin du 1er bilan et ne fait pas les autres

Sachant que ma macro appelé dans mon bilan, fait comme vous avez du le voir dans mon 2ème fichier appel à 4 macros à la suite, j'ai essayé de décomposer celle-ci pour cibler un maximum le problème.

Pour récapituler :
  • Si je désactive la partie mise à jour des données (avec l'Application.Run) dans ce cas, ma boucle fonctionne et effactue tous mes rapports :eek:
  • Si je ne fait appel qu'à ma macro "NettoyageTableau" (je remplace 'LancerToutesMacros = "'" & Fichier & "'!TteMacro" par LancerToutesMacros = "'" & Fichier & "'!NettoyageTableau") dans ce cas, ma boucle fonctionne également.
  • ...

Je continue les tests en ce sens et vous tiens au courant
 

Discussions similaires

Statistiques des forums

Discussions
312 294
Messages
2 086 884
Membres
103 404
dernier inscrit
sultan87