Besoin d'un Pro dans Excel pour la création d'une Macro

Mister Binaire

XLDnaute Occasionnel
Bonjour le Forum, Robert, Papou-net, Modest,

J'ai vraiment besoin d'aide pour cette macro (le fichier est en PJ).

Je vais essayer d'étre le plus explicite concernant le fichier:

Comme vous pouvez le voir au début le Technicien sélectionne les lignes des attributs analysés par un clique droit (Onglet Sommaire) qui sont mis automatiquement dans le fichier de synthèse (Formulaire Process) . J'ai créé des Onglets qui représente chaque attributs pour le moment en exemple "Haze"" à l'intérieur de ces onglets le technicien va rentrer ces datas pour en dégager des stats (voir dans l'onglet concerné). Ce que je voudrais c'est que ces stats (x, ety,médiane,mini, maxi, population, % HS) soient envoyées directement dans l'Onglet "Formulaire Process" (à partir d'un bouton) devant l'attribut concerné, je voudrais également que les spécifications localisées en C2 & D2 de l'onglet soient également envoyées dans les colonnes spécifications de l'onglet "Formulaire Process". Sachant que les attributs vont varier suivant les études, je ne peux pas employer la fonction transposer en créant une matrice.

Pouvez-vous sVp m'aider pour ce projet en VBA.

Merci à vous par avance..

Amicalement,
MB
 

Pièces jointes

  • Trame Synthèse Rapport (3).xlsm
    59.6 KB · Affichages: 37
  • Trame Synthèse Rapport (3).xlsm
    59.6 KB · Affichages: 39
  • Trame Synthèse Rapport (3).xlsm
    59.6 KB · Affichages: 41

sousou

XLDnaute Barbatruc
Re : Besoin d'un Pro dans Excel pour la création d'une Macro

bonjour

Voci un petit code que tu affectes à un bouton dans la feuille attribut (haze)
cela fonctionne si ta structure est toujours la même, sinon tu peut t'inspirer de ce code pour l'adapter


sub deb()

Set mazone = ActiveSheet.range("f3:f9")
nom = ActiveSheet.Name
With Sheets("Formulaire Process")
destlg = Sheets("Formulaire Process").Columns(1).Find(nom).Row
n = 0
For Each i In mazone
.Cells(destlg, 3 + n) = i.Offset(0, 1)
n = n + 1
Next
.Cells(destlg, 11) = ActiveSheet.range("c2")
.Cells(destlg, 12) = ActiveSheet.range("d2")
End With
End Sub
 

Mister Binaire

XLDnaute Occasionnel
Re : Besoin d'un Pro dans Excel pour la création d'une Macro

Merci de ton aide bien précieuse Sousou !!
Je garderai la même structure de l'Onglet Haze pour chaque attribut localisé dans les onglets à venir.

J'ai affecté la macro à un bouton (voir le fichier en PJ).

Cependant si les spécifications sont bien en place dans le formulaire Process les statistiques localisées de G3 à G9 dans l'onglet Haze n'apparaissent pas ??.

Peux-tu stp m'aider à ce sujet...

Te remerciant par avance..

Amicalement,
MB
 

Pièces jointes

  • Trame Synthèse Rapport (3).xlsm
    62.3 KB · Affichages: 31
  • Trame Synthèse Rapport (3).xlsm
    62.3 KB · Affichages: 30
  • Trame Synthèse Rapport (3).xlsm
    62.3 KB · Affichages: 25

Robert

XLDnaute Barbatruc
Repose en paix
Re : Besoin d'un Pro dans Excel pour la création d'une Macro

Bonsoir Mister Binaire, Sousou, bonsoir le forum,

Essaie comme ça :

Code:
Sub deb()
Dim mazone As Range
Dim nom As String
Dim destlg As Integer

Set mazone = ActiveSheet.Range("G3:G9")
nom = ActiveSheet.Name
With Sheets("Formulaire Process")
    destlg = .Columns(1).Find(nom, , xlValues, xlPart).Row
    .Cells(destlg, 3).Resize(, mazone.cells.count).Value = Application.Transpose(mazone)
    .Cells(destlg, 11) = ActiveSheet.Range("c2")
    .Cells(destlg, 12) = ActiveSheet.Range("d2")
End With
End Sub
 

Mister Binaire

XLDnaute Occasionnel
Re : Besoin d'un Pro dans Excel pour la création d'une Macro

Merci à nouveau Robert cela marche à Merveille !!!
C'est vraiment du travail de Pro
Je n'ai plus qu'à dupliquer les onglets par attribut.
Ce fichier deviendra ce que l'on appelle en langage "Lean Manufacturing" un "STD Work" cela évite aux personnes de passer trop de temps sur les tableaux Excel lors des synthèses.

Je reviendrai certainement vers toi pour deux ou trois bricoles de finition.

Merci encore à toi et à toutes les personnes qui m'ont aidées à l'élaboration de ce fichier !!
 

Mister Binaire

XLDnaute Occasionnel
Re : Besoin d'un Pro dans Excel pour la création d'une Macro

Bonsoir le Forum, Robert,

Voila tout marchait bien mais quand je sélectionne les Anti-buée Int où Exter dans l'onglet "Sommaire" et que je rentre les datas dans l'onglet ABI & ABE un message d'erreur Apparaît quand j'appuie sur le bouton "Envoyer au Formulaire" Il faut dire que ces attributs ont un libellé dans la colonne "Sens" du Formulaire. cela est il responsable du message d'erreur ??

Merci de votre aide !! (en PJ le fichier à jour)
 

Pièces jointes

  • Trame Synthèse Rapport (3).xlsm
    111 KB · Affichages: 29
  • Trame Synthèse Rapport (3).xlsm
    111 KB · Affichages: 27
  • Trame Synthèse Rapport (3).xlsm
    111 KB · Affichages: 34

Robert

XLDnaute Barbatruc
Repose en paix
Re : Besoin d'un Pro dans Excel pour la création d'une Macro

Bonjour Mister Binaire

Tu demandes au code de rechercher la variable nom (qui correspond au nom de l'onglet donc à ABI) avec comme argument xlPart qui signifie recherche sur une partie du mot. Où vois-tu écris ABI dans l'onglet Formulaire Process ? Nulle part... Donc la recherche ne trouve pas et la variable destlg ne pouvant être définie cela renvoie une erreur !
Ça marchat avec les autres (Haze, Gloss, Curling) car l'onglet se nommait par exemple Haze et le process Haze (%). On avait bien Haze dans la nom du process...

Je te propose la solution suivante, nomme les onglets des stats avec le nom exact du process. Tu n'auras plus de bug, Malin ! De plus, au lieu d'écrire la macro dans chaque onglet de stats tu pourras l'écrire dans le module Module1 par exemple (j'ai remplacé l'argument xlPart par xlWhole qui signifie recherche le mot exact:

Code:
Sub Stats()
Dim mazone As Range
Dim nom As String
Dim destlg As Integer

Set mazone = ActiveSheet.Range("G3:G9")
nom = ActiveSheet.Name
With Sheets("Formulaire Process")
    destlg = .Columns(1).Find(nom, , xlValues, xlWhole).Row
    .Cells(destlg, 3).Resize(, mazone.Cells.Count).Value = Application.Transpose(mazone)
    .Cells(destlg, 11) = ActiveSheet.Range("c2")
    .Cells(destlg, 12) = ActiveSheet.Range("d2")
End With
End Sub
et l'appeler dans chaque onglet de stats par :
Code:
Sub deb()
Module1.Stats
End Sub

Autre remarque, avant de te précipiter pour appeler de l'aide, essaie de comprendre ce qui ne va pas. Au besoin, la touche [F1] sur un mot clé va te renvoyer l'aide VBA souvent efficace et surtout te permettre de progresser...
 

Mister Binaire

XLDnaute Occasionnel
Re : Besoin d'un Pro dans Excel pour la création d'une Macro

Merci de ton aide bien précieuse Robert !!! (surtout un dimanche)

J'ai suivi tes conseils à la lettre et bien évidemment tout marche à merveille.

Cependant, ce qui m'embête c'est que je suis obligé de faire le distinguo pour les process ayant deux sens alors que le sens est déjà précisé dans la colonne (Sens). Je suis également obligé d'écrire les unités en entier car l'Onglet n'accepte pas les formats :/".

Mais bon cela peu paraître du détail !!
J'ai observé que quand nous faisons un double clique dans l'onglet sommaire afin de masquer les lignes non validées l'attribut en face apparaît alors qu'il n'a pas été sélectionné et ne se trouve pas dans l'onglet Process ??

Peux-tu stp Robert m'arranger cela et je pense qu'un bouton "Masquer les Lignes" serait mieux que le double clique (j'ai peur que cela perturbe les utilisateurs de l'outil qui seront plus au moins à l'aise avec Excel).

Je sais que je crie au loup rapidement mais je ne suis pas doué avec le VBA je reconnais implicitement que je progresse grâce à toi et tes Super Compétences en VBA.
Je stress également car je dois présenter ce projet jeudi prochain devant le management et des futurs utilisateurs de l'outils et tu sais la honte que cela produit quand l'outil "Bug" devant ta hiérarchie.

Je te remercie une fois de plus de ton aide Robert et surtout de ta compréhension (En PJ l'outil après sa dernière mise à jour)
 

Pièces jointes

  • Trame Synthèse Rapport (3).xlsm
    108 KB · Affichages: 29
  • Trame Synthèse Rapport (3).xlsm
    108 KB · Affichages: 22
  • Trame Synthèse Rapport (3).xlsm
    108 KB · Affichages: 27

Robert

XLDnaute Barbatruc
Repose en paix
Re : Besoin d'un Pro dans Excel pour la création d'une Macro

Bonsoir Mister Binaire, bonsoir le forum,

En pièce jointe la version 04.
Tu donnes le nom que tu veux aux onglets des stats mais il faut impérativement :
• dans l'onglet Sommaire en colonne J, que tu écrives, non pas le nom, de l'onglet mais le CodeName de l'onglet correspondant à l'attribut.

Petite parenthèse pour connaître le CodeName d'un onglet tu cliques avec le bouton droit sur l'onglet et tu choisis l'option Visualiser le code. Le CodeName correspond à la première propriété : (Name) (c'est un peu con ils auraient dû l'appeler CodeName au lieu de le mettre entre parenthèses) affichée dans la fenêtre des propriétés en bas à gauche. Il est attribué automatiquement par l'application. L'onglet est identifiable par son CodeName ou son nom ou son index. Par défaut les onglets ont le même CodeName [(Name)] et nom [Name] : Feuil1(Feuil1), le Codename étant la partie hors des parenthèses, le nom étant la partie entre les parenthèses.
On peut donc se rendre par exemple à l'onglet nommé Base, placé en 5ème position et dont le CodeName est Feuil5 par :
Feuil5.Select ou Sheets("Base").Select ou Sheets(5).Select... Je ferme la parenthèse...

Donc, si tu rajoutes un onglet de stats, quelque soit le nom (propriété [Name])que tu lui donnes, il faut que tu écrives dans la colonne J le CodeName (propriété [(Name)]) de cet onglet.
• J'ai modifié le code du Clic-Doit de l'onglet Sommaire pour qu'il renvoie le CodeName dans la colonne X. Donc il ne faut pas effacer les données en colonne X. Elles seront effacées lors de la remise à zéro des attributs...
• J'ai modifié la procédure Stats en conséquence...

Le fichier :

 

Pièces jointes

  • Mister Binaire_v04.xlsm
    115.3 KB · Affichages: 27

Mister Binaire

XLDnaute Occasionnel
Re : Besoin d'un Pro dans Excel pour la création d'une Macro

Bonsoir le Forum, Bonsoir Robert,

Je te remercie du travail en vba effectué Robert cela marche parfaitement bien et bien plus pratique que la première tentative.
Le bouton Afficher / Masquer est également formidable.
Juste une question : (j'ai cherché mais pas trouvé) il est possible de créer un bouton stylé (formes) et de lui assigner une macro dans un module mais est il possible de styler le bouton Afficher/Masqué (formulaire) que tu m'as créé sachant que le code est dans la feuille et non dans un module ? (tu vois j'essaye de progresser)

Encore une fois merci Robert du temps que tu passes pour m'aider.

Le projet avance bien et je te l'enverrais une fois terminé.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Besoin d'un Pro dans Excel pour la création d'une Macro

Bonsoir Mister Binaire, bonsoir le forum,

Il est vrai que les boutons issue de la barre d'outils Contrôles ActiveX ont très peu d'attributs de mise en forme. Mais je n'utilise qu'eux car ils sont beaucoup plus souple à coder que les formes qui, elles, peuvent parader d'une multitudes d'appâts...
La v05 avec un bouton que tu pourras modeler à ta guise...
 

Pièces jointes

  • Mister Binaire_v05.xlsm
    113.5 KB · Affichages: 24

Mister Binaire

XLDnaute Occasionnel
Re : Besoin d'un Pro dans Excel pour la création d'une Macro

Bonsoir Robert, Bonsoir le Forum,

Un fois de plus merci de ton aide Robert pour le bouton stylé.
J'ai fais une première présentation au management de l'application ( c'est le nom donné au fichier par le Lean Manufacturing) aujourd'hui. Que des compliments sur la facilité d'emploie de l'application.
Cependant, j'ai eu le droit à une petite remarque (le contraire aurait été louche) .
Serait il possible de décompter le nombre d'attributs ou les stats ont été effectuées et envoyées au Formulaire process.
Ainsi si la personne ayant effectuée la pré synthèse tombe malade la personne qui reprendra l'application sera exactement ce qui reste à faire.
J'ai préparé sur l'onglet sommaire l'endroit ou cela devrait apparaître (le fichier présenté aujourd'hui est en PJ).

Merci de ton aide Robert pour se peaufinage du fichier.
 

Pièces jointes

  • STD Work Trame Process Labo (1).xlsm
    309.2 KB · Affichages: 25
  • STD Work Trame Process Labo (1).xlsm
    309.2 KB · Affichages: 24
  • STD Work Trame Process Labo (1).xlsm
    309.2 KB · Affichages: 24

Robert

XLDnaute Barbatruc
Repose en paix
Re : Besoin d'un Pro dans Excel pour la création d'une Macro

Bonsoir Mister Binaire, bonsoir le forum,

Premières constatations (voire consternations) :
• Je clique avec le bouton droit dans la colonne D de l'onglet Sommaire pour valider un attribut, B7 s'incrémente (normal...). Je clique sur 7 attributs en tout, je fais Visualiser le Formulaire et... je n'en vois que 5 !? Est-ce normal ou, en français de Sète, c'est quoi ce bor...?

• J'ai validé 7 attributs et je me rend compte que j'en ai un (ou plusieurs) en trop. Plutôt que de remettre à zéro avec le bouton RAZ Des Attributs*, et de revalider les bons attributs, je vais sur la cellule de l'attribut en trop et j'efface le contenu... Le nombre d'attributs validés en B7 n'est pas mis à jour !? C'est quoi ce bor... ?

*remarque : RAZ des Attributs (avec le "D" minuscule) me paraît plus joli...

• pourquoi la cellule L6 de l'onglet Formulaire Process vaut-elle 8 ?

On peut corriger ça mais il faut que tu me dises d'abord ce que tu en penses...

Question :
On le mettrait où le décompte, dans quelle cellule de l'onglet Sommaire ?

 
Dernière édition:

Mister Binaire

XLDnaute Occasionnel
Re : Besoin d'un Pro dans Excel pour la création d'une Macro

Re Bonsoir tout le monde ,

Alors là je dis chapeau bas M Robert, lors de la présentation personne n'a rien vu ! il est vrai que je n'aie pas supprimé d'attributs non plus.
Oui tu as raison il faut corriger le compteur mais plutôt que d'aller sur le formulaire serait il possible que si la personne décoche une ligne dans l'onglet sommaire cela retire l'attribut du formulaire ?? puisque l'onglet sommaire est le tableau de bord .
En version finale tous les onglets seront masqués et l'utilisateur ne pourra se déplacer que par le biais des boutons.
Concernant La valeur 8 c'est mon champs ".ClearContents" qui était mal défini la valeur n'avait pas été supprimée lors du RAZ.
Je t'aie préparé dans l'onglet sommaire l'endroit pour le décompte : Attributs restant à Traiter le 12/08/2014
En PJ le fichier remis au propre avec un d minuscule pour le bouton RAZ.

Merci une fois de plus de ton aide !!
 

Pièces jointes

  • STD Work Trame Process Labo (1).xlsm
    310.7 KB · Affichages: 23
  • STD Work Trame Process Labo (1).xlsm
    310.7 KB · Affichages: 25
  • STD Work Trame Process Labo (1).xlsm
    310.7 KB · Affichages: 25

Robert

XLDnaute Barbatruc
Repose en paix
Re : Besoin d'un Pro dans Excel pour la création d'une Macro

Bonsoir Mister Binaire, bonsoir le forum,

Attention ! La version 06 en pièce jointe est issue de ton avant dernier post. Si dans ton dernier Post tu avais fait des modifs, il faudra les reporter dans cette v06...

Les nouveautés de la version 06 (P... on se croirait chez Microsoft !)

• Une formule en B7 de l'onglet Sommaire pour connaître le nombre d'attributs restant à traiter :
=SI(B7="";"";B7-NBVAL('Formulaire Process'!C6:C43))

• Nouveau code dans le clic du bouton-droit dans la colonne D de l'onglet Sommaire. Gestion d'un clic sur une coche pour la décocher :

Code:
Dim AT As String 'déclare la variable AT (ATtribut)
Dim dest As Range 'déclare la variable DEST (cellule de DESTination)
Dim PL As Range 'déclare la variable PL (PLage)
Dim CEL As Range 'déclare la variable CEL (CELlule)
Dim R As Range 'déclare la variable R (Rechrrhe)

If Target.Column = 4 And Target.Row > 11 And Cells(Target.Row, 1) <> "" Then 'condition 1
    Cancel = True
    i = Target.Row
    AT = Cells(i, 1) 'définit l'attribut AT
    If Target.Value = "" Then 'condition 2 : si la cellule est vide
        With Sheets("Formulaire Process") 'prend en compte l'onglet "Formulaire Process"
            .[W1] = .[W1] + 1 'incrémente la valeur de W1
            If .Range("A6") = "" Then
                Set dest = .Range("A6")
            Else
                Set dest = .Range("A5").End(xlDown).Offset(1, 0)
            End If
            dest.Value = Cells(i, 1) 'la (valeur de la cellule W1)ième cellule de la plage PL, Colonne 1 (=A) prend la valeur de l'attribut
            dest.Offset(0, 1).Value = Cells(i, 2) 'la (valeur de la cellule W1)ième cellule de la plage PL, Colonne 2 (=B) prend la valeur du sens
            dest.Offset(0, 23) = Cells(i, 10) 'la (valeur de la cellule W1)ième cellule de la plage PL, Colonne 24 (=X) prend la valeur du CodeName
        End With 'fin de la prise en compte de l'onglet "Formulaire Process"
        Cells(i, 4) = "ü" 'ecrit une coche dans la cellule
    Else 'sinon (condition 2)
        With Sheets("Formulaire Process") 'prend en compte l'onglet "Formulaire Process"
            Set PL = .Range("A6:A43") 'définit la plage PL
            .[W1] = .[W1] - 1 'décrémente la valeur en W1
            'définit la recherche R (recherche l'attribut AT dans la colonne 1
            Set R = .Columns(1).Find(AT, , xlValues, xlWhole)
            'si il existe au moins une occurrence trouvée, efface le contenu de la ligne de la première occurrence trouvée
            If Not R Is Nothing Then .Rows(R.Row).ClearContents
        End With 'fin de la prise en compte de l'onglet "Formulaire Process"
        Cells(i, 4).ClearContents 'supprime la "coche" dans la cellule
    End If 'fin de la condition 2
End If 'fin de la condition 2
End Sub

• Nouveau code à l'activation de l'onglet Formulaire Process :
Code:
Private Sub Worksheet_Activate()
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Rows.Hidden = False 'affiche toutes les lignes de l'onglet
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub
Pour éviter le fait qu'on ne voyait pas, dans certains cas, tous les attributs validés...

Demain et après demain je ne suis pas disponible. Bonne chance pour ta hiér... hiérar... M... je'arrive pas à prononcer ce mot ! (Je fais le malin mais j'en ai une aussi et très CC* aussi)
*
Casse Couille
Le fichier :
 

Pièces jointes

  • Mister Binaire_v06.xlsm
    321.5 KB · Affichages: 38

Discussions similaires

Statistiques des forums

Discussions
312 218
Messages
2 086 360
Membres
103 197
dernier inscrit
sandrine.lacaussade@orang