Automatiser la récupération de données
Bonjour à tous, je suis nouveau sur ce forum et je vous souhaite à tous une bonne année 2013 avant tout!
Je suis sur l'élaboration d'un fichier excel 2007 qui commence à me poser quelques problèmes au niveau de mes connaissances sur ce logiciel..
J'ai un fichier avec 2 onglets pour le moment: un onglet "fiche incident" (une page qui liste les anomalies et les actions à mettre en place suite à ces anomalies) et un onglet "plan de fiabilisation" qui lui, liste uniquement les actions à mettre en place suite aux anomalies détectées (il y a aussi une mise en forme conditionnelle de couleur vert ou rouge si la date prévue est différente de la date de réalisation de l'action, mais la rien de sorcier ça fonctionne).
J'ai créer une macro dans mon onglet "fiche incident" qui copie l'ensemble de la fiche incident et qui la colle dans un nouvel onglet automatiquement, cet onglet porte le nom de la date à laquelle l'incident a été detecté. Cela fonctionne très bien et je n'ai pas de soucis avec ça.
Le problème que j'ai c'est que mon fichier qui récapitule l'ensemble des actions à mettre en place ("plan de fiabilisation") n'arrive pas à aller chercher les informations puisque les onglets ne sont créés que en allant dans le temps (au fur et à mesure que les anomalies sont détectées et enregistrées). Je pense être assez clair sur mon problème: je n'arrive pas à trouver une formule ou macro qui actualise le nom des onglets ainsi que les cellules qui m'interressent dedans.
Comment pratiquer? Merci de votre aide par avance.
Florian
Bonjour Florian_52
je peux fournir la copie du fichier par MP
Apparemment tu n'as pas compris l'intérêt des forums : le partage
Tu peux très bien faire une copie de ton fichier,
en supprimant toutes les données sensibles et en mettant dedans 1 ou 2 exemples bidons
A+
Désolé je ne pensai pas que certaines personnes pouvaient le prendre dans ce sens la, ma phrase c'est uniquement pour dire que je suis prêt à communiquer le fichier pour faire avancer les choses (les miennes et celles des autres qui auraient le même soucis).
Pour ce qui est du fonctionnement d'un forum, c'est le premier pour logiciel que j'adhère mais pas pour d'autres thème et je ne suis pas radin en infos car j'ai bien compris la philosophie des forums (le partage et l'entre aide). Désolé si ma phrase dérange..
Re,
Désolé si ma phrase dérange
No soucy, pas plus que ça
Mais nous attendons ton fichier
A+
Désolé j'étais sur tablette depuis le début
Voici le fichier (il est poli je lui dis de dire bonjour en l'ouvrant ^^)
Florian,
Voici le code en remplacement de celui existant
Sub CopieFeuille()
Dim NLig As Long
Dim NewName As String
' CopieFeuille Macro
' Macro enregistrée le 04/01/2013 par Florian LACH
' Modifié par BrunoM45 ;)
Sheets("fiche incident").Copy Before:=Sheets("fiche incident")
NewName = Format(Date, "dd-mm-yyyy")
ActiveSheet.Name = NewName
' Inscription des formules dans la feuille Plan de fiabilisation
With Sheets("plan de fiabilisation")
' Trouver la prochaine ligne à remplir du tableau
NLig = .Range("B" & Rows.Count).End(xlUp).Row
' Inscrire les formules
.Range("B" & NLig).FormulaLocal = "'" & NewName & "'!D3" ' N°
.Range("C" & NLig).FormulaLocal = "'" & NewName & "'!C10" ' Description
' Etc...
End With
End SubIl te suffit de compléter la liste des formules à inscrire
A+
BrunoM45 a écrit :Florian,
Voici le code en remplacement de celui existant
Sub CopieFeuille() Dim NLig As Long Dim NewName As String ' CopieFeuille Macro ' Macro enregistrée le 04/01/2013 par Florian LACH ' Modifié par BrunoM45 ;) Sheets("fiche incident").Copy Before:=Sheets("fiche incident") NewName = Format(Date, "dd-mm-yyyy") ActiveSheet.Name = NewName ' Inscription des formules dans la feuille Plan de fiabilisation With Sheets("plan de fiabilisation") ' Trouver la prochaine ligne à remplir du tableau NLig = .Range("B" & Rows.Count).End(xlUp).Row ' Inscrire les formules .Range("B" & NLig).FormulaLocal = "'" & NewName & "'!D3" ' N° .Range("C" & NLig).FormulaLocal = "'" & NewName & "'!C10" ' Description ' Etc... End With End SubIl te suffit de compléter la liste des formules à inscrire
A+
Je modifie ça ce soir en rentrant, j'essaie ça et je te dirais si est bon! Merci d'avance
Merci, la formule fonctionne mais c'est pas réellement ce que je recherche:
- la création du nouvel onglet se renomme avec une date différente de celle qui est en I1 (dans l'onglet fiche incident)
- quand il créer le nouvel onglet, j'aimerai qu'il inscrive dans 'plan de fiabilisation' le numéro de l'action, l'action, le pilote, les dates et les commentaires si il y en a. Je n'arrive pas à modifier l'emplacement des cellules à copier et l'emplacement des cellules ou il doit les coller.
J'essai de faire un mix des deux codes mais pas évident
je me suis rendu compte que en fait renommer l'onglet par la date à laquelle l'anomalie a été detectée n'est pas une bonne idée car il peux y avoir plusieurs anomalies le même jour, ce qui créé un bug car impossibilité de créer 2 onglets portant le même nom.
> Je vais donc essayer de corriger le tir en renommant automatiquement l'onglet créé par le numéro de la fiche (soit 1,2,3,etc...)
> Il faut aussi que les numéros d'actions à mettre en place se suivent et non pas reviennent à 1 à chaque nouvel onglet sinon je vais avoir des 1,2,3,4,5 et 1,2,3,4,5 (autant de fois que j'aurai de nouvel onglet) dans mon fichier global 'plan de fiabilisation'. (intégrer une formule qui m'ajoute le numéro +1 pour chaque action à mettre en place)
> Dans plan de fiabilisation c'est reprendre toutes les infos dans "actions à prévoir" pour chaque onglet.
C'est mon 1er fichier excel avec des codes VBA et je ne saisi pas bien la logique des codes de commande donc désolé si ça n'avance pas vite pour régler mon problème
J'ai trouvé une façon toute simple de palier le problème de nom des onglets, j'ai tout simplement supprimé le code qui demande de renommer l'onglet par la date (ce qui me créé un onglet "fiche incident (2)" puis "fiche incident(3)" etc etc) déjà une chose de faite!
il me reste encore à ajouter mes numéros d'actions automatiquement dès qu'il y en a une nouvelle à mettre en place pour avoir une suite (1,2,3,4,5,6,7,etc au lieu des 1,2,3,4,5 1,2,3,4,5 etc etc)
il reste aussi à intégrer automatiquement le contenu des cellules "actions à prévoir" (n°action, action, pilote, dates, commentaires) dans mon onglet général "plan de fiabilisation".
le code est le suivant pour le moment (il y a un soucis avec les formules renvoyées car je bidouille encore dessus):
Sub CopieFeuille()
Dim NLig As Long
Dim NewName As String
' CopieFeuille Macro
' Macro enregistrée le 04/01/2013 par Florian
' Modifié par BrunoM45
Sheets("fiche incident").Copy Before:=Sheets("fiche incident")
' Inscription des formules dans la feuille Plan de fiabilisation
With Sheets("plan de fiabilisation")
' Trouver la prochaine ligne à remplir du tableau
NLig = .Range("B" & Rows.Count).End(xlUp).Row
' Inscrire les formules
.Range("B" & NLig).FormulaLocal = "'" & NewName & "'!D34" ' B11
.Range("C" & NLig).FormulaLocal = "'" & NewName & "'!C10" ' C11
' Etc...
End With
End Sub
Je bosse encore un peu dessus et on verra demain! Bonne nuit à tous
Bonjour à tous, j'ai trouvé le moyen de shunter la chose j'ai créer par avance tous mes onglets et je fais de la recopie de cellule dans mon principal c'est impeccable et plus simple!
Merci de votre implication!