Nous avons pour projet de créer un utilitaire nous permettant d'avoir la synthèse des chantiers réalisés par l'atelier.
Cet utilitaire permettrait aux techniciens de renseigner, par chantier réalisé, le nombre d'heures passées, ainsi que les matériaux consommés.
Nous avons un fichier de suivi d'affaires (suiviaffaire.xlsxm) où nous synthétisons toutes nos affaires qu'elles soient au stade de devis, affaire en cours de traitement, et affaire traitée.
Nous arrivons à récupérer les informations du fichier suivi affaire pour les inscrire dans un autre fichier excel, celui qui sera utilisé par l'atelier (bddatelier).
Nous avons ensuite filtré les chantiers par statuts ''en cours''.
Ces informations seront évolutives/dynamiques avec le temps.
Tous les fichiers sont sur un sharepoint.
Le but du jeu est, via un userform?, d'afficher un bouton par ''chantier en cours'' sur le fichier de la tablette.
Le technicien viendrait alors renseigner le nom du ou des intervenant(s) qui à(ont) travaillé(s) sur ce chantier, avec les matériaux consommés.
Une fois la validation effectuée, une ligne synthétisant ces informations serait inscrit ''en dur'' dans une feuille 'récap'.
Il y a un détail de la trame dans la feuille du même nom.
J'ai essayé de créer un userform pour y afficher les boutons.
Cependant je n'arrive pas à renommer ces boutons dynamiquement avec le nom des fichiers en cours.
Peut être que l'userform n'est même pas le bon outil pour réaliser ce projet?
J'ai travaillé en parallèle et ai quasiment terminé mon fichier.
Pourriez vous m'indiquer la partie du code permettant d'afficher, dans la liste déroulante de la zone de saisie, uniquement les chantiers en cours ?
For i = 1 To [T_Data].Rows.Count
If [T_Data].Item(i, 5) = "" Then 'cette ligne
Me.ComboBox1.AddItem [T_Data].Item(i, 1)
Me.ComboBox1.List(Me.ComboBox1.ListCount - 1, 1) = [T_Data].Item(i, 2)
End If
Next
J'ai fait une petite sauce avec 2 fichiers, il me reste 1 problème à résoudre, peut être pouvez vous m'aider.
Dans le fichier gestiontest.xlsxm, je change le status des chantiers, notamment s'il est en cours ou non (cellule =1 ou pas de la colonne D).
Je récupère ce tableau dans le fichier chantiertest.xlsxm, en feuille 'extraction'.
Dans la feuille filtre, j'ai créé un TCD où je filtre les encours = 1.
En page dem, je lance une macro pour actualiser les tableaux et lancer l'userform
J'ai tenté plusieurs codes pour actualiser le TCD, même en mettant des pauses, je n'arrive pas à l'actualiser pour récupérer les chants correctement dans le formulaire.
Le tableau d'extraction s'actualise correctement, à condition que j'enregistre le fichier gestiontest au préalable.
Mais pour le TCD rien à faire.
Avez vous une idée de comment solutionner ce problème d'actualisation?
Bonsoir,
Juste pour le souci d'actualisation
Lorsque tu sélectionnes la requête (dans l'onglet "extraction"), clique dans le ruban "Requête", puis "Propriétés", et désactive la mise à jour en arrière-plan
Le fait de désactiver l'actualisation de cette extraction me permettra d'actualiser correctement le TCD ensuite c'est ça?
edit:
Je viens d'essayer, en lançant une fois l'actualisation, l'extraction se met bien à jour, mais pas le TCD.
Si je relance l'actualisation une seconde fois, le TCD s'actualise aussi.
On touche au but
edit 2:
J'ai l'impression que j'allais trop vite, en attendant un peu, même le TCD s'actualise.
Merci beaucoup à vous pour l'aide
Très bonne journée
Bonjour,
Lorsque tu désactives l'actualisation en arrière-plan, le reste des instructions (si instructions VBA il y a) attend la fin de l'actualisation avant de continuer. Il faut bien évidemment que le fichier "Source" (ici ton fichier gestiontest) soit enregistré au préalable pour prendre en compte les dernières modifications.
Ton TCD actuel ne ramène que les numéros de chantiers, sans aucun calcul...
Et on ne place pas ce type de code dans un évènement de Feuil, on place dans un module standard
VB:
Sub Formulaire()
'actualisation extraction
Sheets("extraction").Select
Sheets("extraction").Activate
ActiveWorkbook.RefreshAll
MsgBox ("extraction actualisée")
Worksheets("filtre").PivotTables("TCD1").PivotCache.Refresh
MsgBox ("tcd actualisé")
Sheets("dem").Select
MsgBox ("Affaires actualisées")
'affichage formulaire
test.Show Modal
End Sub