Besoin d'aide pour une macro complexe

  • Initiateur de la discussion Initiateur de la discussion Malone
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Malone

XLDnaute Nouveau
Bonjour,

Je sollicite l'aide des personnes qui voudront bien m'aider sur une macro qui devient un peu plus complexe que ce que j'ai fait jusqu'à maintenant. C'est pour ça que je préfère ouvrir un fil de discussion unique plutot que 10 post différents.

Explication :

Je dois mettre à jours une trentaine de fichier différent de la même manière à partir d'un classeur Excel unique (source) qui contient divers informations comptable.

1-/ Ce fichier est mis à jour tout les mois, le fichier change de place et de nom mais l'arboressence des dossiers est toujours la même. Par exemple on aura
C:/reporting/0109/nomsource0109.xls
C:/reporting/0209/nomsource0209.xls
Etc.
Je pense pouvoir faire ça mais je n'y suis pas encore

2-/Le fichier est mis à jour de la façon suivante:
A partir d'une msgbox l'utilisateur indique le mois à mettre à jour ex: 0909
La macro devra modifier les liaisons des fichiers (simple ctlr+H) et copier une ligne de formule sur le mois concerné dans le fichier.

Ce que j'essai de faire pour l'instant c'est de retrouver le mois concerné dans le fichier pour ensuite coller les formules (en jaune sur les violettes) avec le nouveau lien et réaliser divers petit calcul en automatique.

Mon problème est que ma LOOP bug lorsque je recherche le mois rentré dans la msgbox pour effectuer les actions

Je cherche ici à atteindre le mois 02/08 de la façon suivante :

Tant que la cellule est différente de "02/08" on passe une ligne en dessou et lorsqu'il là trouve on fera les actions de copie de formule.

Vous trouverez le fichier ci-joint
(j'ai du supprimer bcp de formule pr que le fichier soit moin lourd)


Je ne demande pas à ce que l'on me construise le fichier en entier mais juste un peu d'assistance.
Je vous remercie pour votre aide

Malone
 

Pièces jointes

Re : Besoin d'aide pour une macro complexe

Bonjour Malone (Jacques? 😀😉),

Ton explication est clair où presque:
Ce que j'essai de faire pour l'instant c'est de retrouver le mois concerné dans le fichier pour ensuite coller les formules (en jaune sur les violettes)
😕

Pourquoi n'as-tu pas laissé le code dans le fichier?
 
Re : Besoin d'aide pour une macro complexe

Effectivement c mieux avec le code!
J'ai oublier de le remettre car le fichier de base était trop gros, la encore il est limite et je me demande ce que je peux faire pour l'alléger.

Merci de ton aide

Et non ce n'est pas Malone Jack lol
 

Pièces jointes

Re : Besoin d'aide pour une macro complexe

Bonjour,

L'ami Skoobi, n'étant pas là, je te propose ceci:

Si j'ai bien compris ta demande, tu veux une action pour toutes les cellules contenant par exemple "02/08" dans la plage A27:Ax

Si c'est cela, cette macro pourra peut-être t'aider.

N'ayant pas les données necessaires pour vérifier le reste, je n'ai vérifié que la justesse du parcours des cellules.
Code:
Sub MAJamort()
    Dim plg As Range, c As Range
    Dim Mois As String
    'Demander le mois
    Mois = InputBox("Quel le numéro de mois?", "Mois à armer")
    
    'Si l'entrée utilisateur ne resemble pas au masque -> sortir
    If Not Mois Like "##/##" Then Exit Sub
    
    'Travailler sur la feuille 'Feuil1'
    With Sheets("Feuil1")
        'Déterminer la plage de la ligne 27 à la dernière ligne occupée de la colonne A
        Set plg = .Range("A27:A" & .Range("A" & Rows.Count).End(xlUp).Row)
        
        'Si la première cellule de la plage retournée est inférieure à 27 ->sortit
        If plg.Row < 27 Then Exit Sub
        
        'Parcourir toutes les cellules de la plages
        For Each c In plg.Cells
            'Si la cellule en cours est = à Mois
            If c = Mois Then
                'Ici action pour toutes les cellules contenant Mois
                
            End If
        Next c
    End With
End Sub

A+
 
Re : Besoin d'aide pour une macro complexe

Merci de te pencher sur le problème Hasco
Je n'arrive pas à voir comment je peux intégrer ton code. En fait je voudrai que si je tape 02/08, la macro se place directement sur cette date puis copie les formules (en jaune) sur la même plage mais en face de toute les dates 02/08. (partie violette)

J'ai utiliser des dimensions pour les colonnes et lignes, avec des valeurs pour C et L car elles permettront de sélectionner la plage exact une fois que la loop aura incrémenter les valeurs.

En fait je ne comprend pas pourquoi ma boucle ne s'arrête pas au premier 02/08 lorsqu'on le tape dans la msgbox

Je ne suis pas expert donc désolé si j'ai parfois de mal à comprendre certains codes.
 
Dernière édition:
Re : Besoin d'aide pour une macro complexe

Re,

Voici qui copie les formules en jaunes dans les cellules idoines:

Code:
Sub MAJamort2()
    Dim plg As Range, c As Range
    Dim Mois As String
    'Demander le mois
    Mois = InputBox("Quel le numéro de mois?", "Mois à armer")
    
    'Si l'entrée utilisateur ne resemble pas au masque -> sortir
    If Not Mois Like "##/##" Then Exit Sub
    
    'Travailler sur la feuille 'Feuil1'
    With Sheets("Feuil1")
        'Déterminer la plage de la ligne 27 à la dernière ligne occupée de la colonne A
        Set plg = .Range("A27:A" & .Range("A" & Rows.Count).End(xlUp).Row)
        
        'Si la première cellule de la plage retournée est inférieure à 27 ->sortit
        If plg.Row < 27 Then Exit Sub
        
        'Parcourir toutes les cellules de la plages
        For Each c In plg.Cells
            'Si la cellule en cours est = à Mois
            If c = Mois Then
                .Range("I25:AF25").Copy
                .Range("I" & c.Row & ":AF" & c.Row).PasteSpecial Paste:=xlPasteFormulas
            End If
        Next c
    End With
End Sub

Quant à ta boucle, en enlevant les guillemets de "Mois" cela devrait le faire.

Code:
'Enlever les guillemets
Do While Cells(L, c) <> [SIZE=3][COLOR=red][B]"[/B][/COLOR][/SIZE]Mois[SIZE=3][COLOR=red][B]"[/B][/COLOR][/SIZE]

A+
 
Re : Besoin d'aide pour une macro complexe

Hello !

J'ai attaqué la seconde partie de ma macro mais je suis bloqué sur une loop
Le problème est que la macro ouvre bien le premier fichier mais après avoir fait un tour, elle ne reprend pas le nom du second fichier indiqué en cellule A13 et le "NomFichierF" reste vide (il ne se réincrémente pas), elle ne trouve donc pas le fichier et bug.

Je suis sur que c'est tout bête mais je ne trouve pas grrrr

CC = Colonne
LL = Ligne

Merci de votre aide

Code:
Sub TESTFIN()

    Dim NomFichierF As String
    Dim CheminF As String
    Dim CC As Integer
    Dim LL As Integer
    Dim FIN As Integer
       


CC = 1
LL = 12
' On sélectionne le fichier et on l'ouvre

Do While Cells(LL, CC) <> "FIN"
    'Determination du fichier
    NomFichierF = Cells(LL, CC)
    
    CheminF = "C:\Documents and Settings\127003409\Desktop\Action en cours\New Methode AMORTISSEMENT\"
    Workbooks.Open Filename:=CheminF & NomFichierF



    'Ligne suivante
    LL = LL + 1
    
Loop

End Sub

Ou ci-joint le fichier
 

Pièces jointes

Dernière édition:
Re : Besoin d'aide pour une macro complexe

Salut Skoobi,

C'est bizzar car lorsque je test la macro sur mon poste, il ouvre bien le premier fichier actualV1 mais le fichier actualV2 ne s'ouvre pas. J'ai un msg d'erreur qui me dit qu'il ne trouve pas le fichier avec un lien qui pointe vers un fichier innexistant comme si la case A13 était vide. En me montrant le lien du dossier mais sans fichier au bou à ouvrir.
"C:\dossier\"
 
Re : Besoin d'aide pour une macro complexe

Bonjour Hasco!

Hummmm c'est très chiant alors,

Je vous montre ce que j'ai à l'écran, on voit bien que pour le deuxième fichier le NomfichierF ne se remplie pas alors que le fichier ActualV1 c'est bien ouvert et pas le V2. Si vous avez une idée ?

Quand vous dites que ça marche chez vous, c'est qu'il propose d'ouvrir les deux fichiers ?? ou juste le premier
 
Re : Besoin d'aide pour une macro complexe

Re,

@Malone, quand je dis que cela fonctionne bien c'est que la boucle fonctionne correctement avec ton fichier exemple dans lequel j'ai simplement remplacer la ligne d'ouverture du fichier par:

Debug.Print NomFichierF

Et le deux noms de fichiers se sont affichés dans la fenêtre exécution.

ActualV1.xls
ActualV2.xls

Je ne peux pas ouvrir les fichiers puisque je ne l'ai ai pas, ni même le chemin qui va avec.

As-tu testé ta macro en mode 'pas à pas' (F8 curseur dans la macro)?

A+
 
Re : Besoin d'aide pour une macro complexe

Oki!

Oui j'ai bien testé en mode pas à pas, mais la macro bute quand elle doit faire le fichier actualV2, on voit sur la capture d'écran que le NomfichierF est vide quand je met le curseur par dessu. C'est pour ça que la macro s'arrête en ne trouvant pas le fichier.

Ca s'annonce un peu galère si chez vous sa passe et chez moi ça bug :s
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
299
Retour