Besoin d'aide pour création d'une macro Excel

nivier13

XLDnaute Nouveau
Bonjour à tous,

Ayant des connaissances assez limitées sur Excel, je poste ce message sur ce forum en espérant recevoir un peu d'aide :)

Sur mon fichier Excel, j'ai créé pour chaque année d'activité (de 2008 à 2014) une feuille Excel permettant le suivi de mes dossiers clients. Sur chacune de ces feuilles Excel figure une colonne "Statut du dossier" afin de connaître l'état d'avancement de chaque dossier client.
Ma demande est la suivante : je souhaiterai disposer d'une macro qui, lorsque le statut du dossier client est sur "Terminé", la ligne de ce dossier client se reporte dans la feuille Excel "Dossiers Terminés" et disparaît ainsi de la feuille de l'année où a été créé le dossier client (entre 2008 et 2014). Les dossiers terminés classés dans la feuille Excel "Dossiers Terminés" doivent être classés par ordre chronologique de la date d'envoi du rapport.
Sachant qu'il arrive quelques fois qu'un dossier terminé soit de nouveau réouvert, je souhaiterai que lorsque j'enlève le statut "Terminé" d'un dossier se trouvant dans la feuille "Dossiers Terminés", celui-ci revienne dans sa feuille d'origine.

Voilà j'espère avoir été assez explicite et j'espère que quelqu'un pourra m'aider car la création de macros est bien au-delà de mes compétences...

Merci à vous :)
 

Pièces jointes

  • Modèle.xls
    54 KB · Affichages: 56
  • Modèle.xls
    54 KB · Affichages: 57
  • Modèle.xls
    54 KB · Affichages: 57
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Besoin d'aide pour création d'une macro Excel

Re, CC mes hommages du soir

Comme je le dis souvent , un fichier exemple ne devrait jamais dépasser 100 à 200 Ko

(jadis les PJ étaient limités à 48ko et on s'en sortait très bien ainsi ;) )

De plus, on a besoin d'un fichier exemple, pas du fichier original, jamais !

PS: Je n'ai pas bien sur pas téléchargé ce fichier, rien que le lien m'a fait tiquer ;)
 
Dernière édition:

nivier13

XLDnaute Nouveau
Re : Besoin d'aide pour création d'une macro Excel

Bonjour à tous,

Pour faire suite à vos remarques, j'ai modifié mon premier message et y ai ajouté un fichier Excel beaucoup plus léger et suffisant pour la compréhension de ma demande :)

Merci à vous :)
 

Staple1600

XLDnaute Barbatruc
Re : Besoin d'aide pour création d'une macro Excel

Re

Le code ci-dessous fonctionne sur un *.xls que j'ai recréé à partir de ton fichier exemple
(Avec les modifs suivantes: pas de cellules fusionnées, et ligne d'entête en ligne 1 )
Code:
Sub a()
Dim i, pf As Range, cCopy As Range
For i = 2008 To 2014
With Sheets(CStr(i))
    .Range("D1").AutoFilter Field:=4, Criteria1:="Terminé"
    Set pf = .[_FilterDataBase]
    Set cCopy = pf.Offset(1, 0).Resize(pf.Rows.Count - 1).SpecialCells(12)
    cCopy.Copy Sheets("Dossiers Terminés").[A65536].End(xlUp)(2)
    .AutoFilterMode = False
    Set pf = Nothing
    Set cCopy = Nothing
End With
Next
End Sub

PS: Je suis actuellement sur un PC avec XL2K3, j'ai ouvert ton *.xls mais même en supprimant les cellules fusionnées, le code de la macro a ne fonctionne pas alors qu'il fonctionne sur le fichier que j'ai créé pour le tester ??????

EDITION: Si tu veux tester la macro avec succès, crées un classeur selon le modèle, ci-dessous.
TestOK.jpg
 

Pièces jointes

  • TestOK.jpg
    TestOK.jpg
    82.6 KB · Affichages: 227
  • TestOK.jpg
    TestOK.jpg
    82.6 KB · Affichages: 223
Dernière édition:

nivier13

XLDnaute Nouveau
Re : Besoin d'aide pour création d'une macro Excel

Merci pour ta réponse...

Est-il possible de me transférer le fichier Excel sur lequel tu as travaillé car je ne sais pas du tout comment intégrer une macro sur Excel :( ?

En tout cas merci beaucoup pour ton aide :)
 

Staple1600

XLDnaute Barbatruc
Re : Besoin d'aide pour création d'une macro Excel

Re

C'est pas grave, je vais te dire comment faire:
Tu as vu la copie d'écran dans mon précédent message ?
Donc tu créés un classeur avec les mêmes feuilles
Un fois cela fait, tu fais : Outils/Macros/Microsoft Visual Basic Editor
(ou le raccourci clavier suivant: ALT+F11)
Là , tu fais Insertion/Module
Dans la partie blanche à droite, tu copies/colles la macro de mon premier message
Jusque là c'est OK ? Tu y es ?
Ceci fait, tu fais ALT+Q (pour revenir dans Excel)
Ensuite pour lancer la macro:
Outils/Macros/NOMDELAMACRO (donc ici a) -> Exécuter

Voila, désormais tu sais mettre du code VBA dans un classeur et exécuter une macro ;)

PS: Depuis un bail déjà, je me suis promis (pour diverses raisons) de plus joindre de fichier Excel sur le forum.
La principale étant que cela oblige le demandeur à mettre les mains dans le cambouis ;)
 

nivier13

XLDnaute Nouveau
Re : Besoin d'aide pour création d'une macro Excel

Merci pour ton aide.

J'ai suivi ta procédure mais lorsque j'exécute la macro, j'ai une fenêtre qui apparaît (voir pièce jointe) qui m'indiquer une erreur au niveau de l'exécution.

Désolé de te solliciter autant mais sais-tu comment je peux résoudre ce problème ? Je t'avoue être perdu :(:(:(

Merci à toi.
 

Pièces jointes

  • Sans titre 1.jpg
    Sans titre 1.jpg
    45.4 KB · Affichages: 112
  • Sans titre 1.jpg
    Sans titre 1.jpg
    45.4 KB · Affichages: 113
  • Sans titre 1.jpg
    Sans titre 1.jpg
    45.4 KB · Affichages: 107
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Besoin d'aide pour création d'une macro Excel

RE

Dans mon fichier exemple, il y avait au moins sur chaque feuille annuelle, un ligne contenant Terminé en colonne D
Est-ce le cas chez toi?

EDITION: Au grands maux, les grands remèdes ;)
Copies les codes suivants dans un classeur vierge
Et lances la macro crea (sans te préoccuper de ce qu'elle contient)
Normalement, tu auras comme résultat final, les données adéquates recopiées sur la feuille Dossiers Terminés
Est-ce que ce test a fonctionné sur ton PC ?
Code:
Sub crea()
'///// Les lignes ci-dessous ne servent qu'à créer un exemple
Dim EXEMPLE As Workbook, i, arrWS
arrWS = Array("Feuil1", "2008", "2009", "2010", "2011", "2012", "2013", "2014")
Application.ScreenUpdating = False
Set EXEMPLE = Workbooks.Add(1)
With EXEMPLE
With .Sheets(1)
    .Range("A1") = "ENTETE1"
    .Range("A1").AutoFill Destination:=Range("A1:L1"), Type:=xlFillDefault
    With .Range("A2:L10")
        .FormulaR1C1 = "=INT(RAND()*NOW())"
        .Value = .Value
    End With
    .Range("D2:D10") = Application.Transpose(Array("Terminé", "n/c", "Terminé", "n/c", "n/c", "n/c", "n/c", "n/c", "Terminé", "n/c"))
    End With
For i = 1 To 7
.Sheets.Add after:=.Sheets(Sheets.Count)
.ActiveSheet.Name = CStr(2007 + i)
Next i
.Sheets(arrWS).FillAcrossSheets .Sheets("Feuil1").Range("A1:L10")
.Sheets(1).Name = "Dossiers Terminés"
.Sheets(1).Rows("2:11").Clear
End With
'////////FIN CREATTION DONNEES////////////////////
'Macro de filtrage
MsgBox "Lancer la macro a (macro récapitulative sur feuille Dossiers Terminés)?"
Call a
EXEMPLE.Sheets(1).Activate
End Sub
Code:
Sub a()
Dim i, pf As Range, cCopy As Range
For i = 2008 To 2014
With Sheets(CStr(i))
    .Range("D1").AutoFilter Field:=4, Criteria1:="Terminé"
    Set pf = .[_FilterDataBase]
    Set cCopy = pf.Offset(1, 0).Resize(pf.Rows.Count - 1).SpecialCells(12)
    cCopy.Copy Sheets("Dossiers Terminés").[A65536].End(xlUp)(2)
    .AutoFilterMode = False
    Set pf = Nothing
    Set cCopy = Nothing
End With
Next
End Sub
 
Dernière édition:

nivier13

XLDnaute Nouveau
Re : Besoin d'aide pour création d'une macro Excel

Merci merci merci :) ça fonctionne bien.

J'ai un peu testé la macro du transfert des dossiers terminés dans la feuille créée à cet effet et j'ai quelques interrogations.

Par hasard, j'ai enlevé le statut "Terminé" à certains dossiers et j'ai lancé la macro "a" afin qu'une mise à jour soit faite dans la feuille "Dossiers Terminés". Je ne sais pas si cela est normal mais dès que j'exécute la macro pour faire une mise à jour des dossiers, les dossiers terminés au moment de l'exécution de la macro s'ajoute à celle existante. Il y'a donc de nombreux doublons qui subsistent dans la feuille "Dossiers Terminés".

J'abuse un peu...mais est-il possible de remédier à ce problème ?

Si c'est pas possible, merci quand même pour toute l'aide apportée :)
 

Staple1600

XLDnaute Barbatruc
Re : Besoin d'aide pour création d'une macro Excel

Re


Essayes cette ajout (suppression des données sur les feuilles sources)
Code:
Sub ab()
Dim i, pf As Range, cCopy As Range
For i = 2008 To 2014
With Sheets(CStr(i))
    .Range("D1").AutoFilter Field:=4, Criteria1:="Terminé"
    Set pf = .[_FilterDataBase]
    Set cCopy = pf.Offset(1, 0).Resize(pf.Rows.Count - 1).SpecialCells(12)
    cCopy.Copy Sheets("Dossiers Terminés").[A65536].End(xlUp)(2)
    cCopy.Delete shift:=xlUp 'suppression dans feuilles source
    .AutoFilterMode = False
    Set pf = Nothing
    Set cCopy = Nothing
End With
Next
End Sub

A tester avec la macro crea (remplacer Call a par Call ab) pour être sur que le test fonctionne.
(Je viens de le faire : test OK sur mon PC)
 

nivier13

XLDnaute Nouveau
Re : Besoin d'aide pour création d'une macro Excel

Si j'ai bien compris, la macro "ab" annule et remplace la macro "a" ?

Si c'est bien cela, lorsque j'essaye de lancer la macro "ab" j'ai la même erreur que précédemment, à savoir une erreur d'exécution (voir pièce jointe).

Pour info, je suis reparti du début en créant un nouveau classeur et en ajoutant les deux macros avec les rectifications indiquées : crea et ab.

Dur dur les macros...

MERCI :)
 

Pièces jointes

  • Sans titre 1.jpg
    Sans titre 1.jpg
    55.4 KB · Affichages: 96
  • Sans titre 1.jpg
    Sans titre 1.jpg
    55.4 KB · Affichages: 110
  • Sans titre 1.jpg
    Sans titre 1.jpg
    55.4 KB · Affichages: 109

Staple1600

XLDnaute Barbatruc
Re : Besoin d'aide pour création d'une macro Excel

Re

Tu n'as pas besoin (enfin pour faire ce test) de créer quoique ce soit:
La macro crea fait le boulot pour toi
Donc on récapitule:
1)Tu ouvres Excel
2)ALT+F11 puis Insertion/Module
Tu copies les macros ci-dessous
Code:
Sub crea()
'///// Les lignes ci-dessous ne servent qu'à créer un exemple
Dim EXEMPLE As Workbook, i, arrWS
arrWS = Array("Feuil1", "2008", "2009", "2010", "2011", "2012", "2013", "2014")
Application.ScreenUpdating = False
Set EXEMPLE = Workbooks.Add(1)
With EXEMPLE
With .Sheets(1)
    .Range("A1") = "ENTETE1"
    .Range("A1").AutoFill Destination:=Range("A1:L1"), Type:=xlFillDefault
    With .Range("A2:L10")
        .FormulaR1C1 = "=INT(RAND()*NOW())"
        .Value = .Value
    End With
    .Range("D2:D10") = Application.Transpose(Array("Terminé", "n/c", "Terminé", "n/c", "n/c", "n/c", "n/c", "n/c", "Terminé", "n/c"))
    End With
For i = 1 To 7
.Sheets.Add after:=.Sheets(Sheets.Count)
.ActiveSheet.Name = CStr(2007 + i)
Next i
.Sheets(arrWS).FillAcrossSheets .Sheets("Feuil1").Range("A1:L10")
.Sheets(1).Name = "Dossiers Terminés"
.Sheets(1).Rows("2:11").Clear
End With
'////////FIN CREATTION DONNEES////////////////////
'Macro de filtrage
MsgBox "Lancer la macro ab (macro récapitulative sur feuille Dossiers Terminés)?"
Call ab
EXEMPLE.Sheets(1).Activate
End Sub
Code:
Sub ab()
Dim i, pf As Range, cCopy As Range
For i = 2008 To 2014
With Sheets(CStr(i))
    .Range("D1").AutoFilter Field:=4, Criteria1:="Terminé"
    Set pf = .[_FilterDataBase]
    Set cCopy = pf.Offset(1, 0).Resize(pf.Rows.Count - 1).SpecialCells(12)
    cCopy.Copy Sheets("Dossiers Terminés").[A65536].End(xlUp)(2)
    cCopy.Delete shift:=xlUp 'suppression dans feuilles source
    .AutoFilterMode = False
    Set pf = Nothing
    Set cCopy = Nothing
End With
Next
End Sub
3) Tu exécutes la macro crea
Et au final le test devrait fonctionner.

C'est OK chez toi ?
 

nivier13

XLDnaute Nouveau
Re : Besoin d'aide pour création d'une macro Excel

Bonjour et merci pour ta réponse.

Je viens de créer un nouveau classeur avec les feuilles de 2008 à 2014 sans la macro créa.

J'ai ajouté la macro ab et tout fonctionne bien sauf au moment des mises à jour des dossiers.

En effet, comme tu pourras le constater dans le fichier ci-joint, dans la feuille 2011 la macro ne classe pas les dossiers terminés...

Aussi, dès que je change le statut d'un dossier classé dans la feuille "Dossiers Terminés", celui-ci ne revient pas dans sa feuille d'origine.

Voilà mes constatations, je ne sais pas trop comment résolver tous ces problèmes.
 

Pièces jointes

  • Fichier test.xlsm
    22.9 KB · Affichages: 56
  • Fichier test.xlsm
    22.9 KB · Affichages: 64
  • Fichier test.xlsm
    22.9 KB · Affichages: 64

Discussions similaires

Réponses
2
Affichages
290

Statistiques des forums

Discussions
312 209
Messages
2 086 270
Membres
103 168
dernier inscrit
isidore33