Problème avec Macro

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 !

Mister Binaire

XLDnaute Occasionnel
Bonjour le Forum,

J'ai un problème avec cette macro (Voir Fichier en PJ)
Quand je fais un clique droit dans la colonne "Validation des attributs" je voudrais que l'attribut laboratoire en face soit envoyé dans l'Onglet dans l'onglet "Formulaire Process" ou "Formulaire Dt" suivant le type d'étude sélectionnée en A1 et le sens en B1 et ainsi de suite afin de créer un onglet de synthèse.
mais cela ne marche pas. ???

Merci de votre Aide..

Amicalement,
MB
 

Pièces jointes

Re : Problème avec Macro

Bonjour Mister Binaire,

Je n'ai pas tout compris, mais disons que des choses se passent si le nom de ton onglet est identique au nom utilisé dans le code (il manque un 'r' à "fomulaire")

... pour le reste, je ne sais pas, si ce qui se passe est ce que tu attends 😕
 
Re : Problème avec Macro

Merci de ton aide bien précieuse Modeste.

En PJ, je remets mon fichier avec une meilleure présentation cette fois.

Mais j'aurais encore besoin de ton aide car je suis nulle en VBA . Je voudrais déjà lier le bouton bleu "RAZ des attributs" à cette déclarations" Private Sub CommandButton1_Click()" dans mon code VBA merci de m'expliquer la procédure.

Concernant mon fichier, je désirerais si possible une autre macro pour supprimer les lignes non remplies dans l'onglet "Formulaire Process. Car la personne ne va pas valider tous les attributs dans l'onglet sommaire et je voudrais supprimer de manière automatique les lignes ne contenant pas d'attributs analysés. Espérant avoir été clair.

Vous remerciant par avance..

MB
 

Pièces jointes

Re : Problème avec Macro

Bonsoir Mister Binaire,

J'aurais assez envie de dire: "Ouille!" ... Tu es certain de vouloir te lancer dans les macros?

Je veux bien t'expliquer pour associer le code à ta forme automatique:
  • clique droit sur ton "pseudo-bouton" et choisis "Affecter une macro"
  • dans la boîte de dialogue qui apparaît, avant tout, sélectionne ton classeur dans la liste déroulante de la zone "Macros dans"
  • clique ensuite sur "Nouvelle"
  • un nouveau Module va s'ajouter automatiquement à ton projet, contenant une procédure du genre "Rectangleàcoinsarrondis1_Cliquer"
  • il ne te reste plus qu'à copier tes 2 lignes de code dans cette nouvelle procédure
Je signale au passage qu'il est tout à fait possible d'écrire: "Feuil1.Range("D12😀49").ClearContents"

... en lieu et place de:
"Feuil1.Range("D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23, D24, D25, D26, D27, D28, D29, D30, D31, D32, D33, D34, D35, D36, D37, D38, D39, D40, D41, D42, D43, D44, D45, D46, D47, D48, D49").ClearContents"

Là-dessus, comme dirait Obélix: "j'ai un sanglier sur le feu"
 
Re : Problème avec Macro

Bonsoir Mister Binaire, Modeste, bonsoir le forum,

Concernant la macro à affecter au bouton, il faut que le code se trouve dans un module standard et pas dans un composant onglet comme c'était le cas (Feuil1(Sommaire)). La procédure [Rectangleàcoinsarrondis1_Cliquer] se trouve dans le module [Module4] :
Code:
Sub Rectangleàcoinsarrondis1_Cliquer()
Feuil1.Range("D12:D49").ClearContents
Feuil7.Range("A6:B43,W1").ClearContents
End Sub

Ensuite, tu demandes à supprimer les lignes vides mais je pense que tu voulais dire masquer ! Car sinon, tu risques de te retrouver avec juste quelque lignes et le Rapport. Ou alors, il faudrait qu'au Clic sur le bouton RAZ des Attributs cela rajoute les ligne effacées. Bref ta demande n'est pas très claire pour moi. J'attends tes explications...
Je me suis rendu compte qu'avec ton code ça plantant après la RAZ au premier clic car W1 est alors vide. Aussi si tu cliques plusieurs fois dans la même cellule ça incrémente le nombre d'attributs validés...
Comme je ne comprends pas la manière de faire dans ton code, j'ai utilisé du code que je comprends pour corriger ces erreurs et ça donne :
Code:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim i As Integer
Dim Feuille As String
Dim PL As Range

If Target.Value <> "" Then Cancel = True: Exit Sub
If Target.Column = 4 And Target.Row > 11 And Cells(Target.Row, 1) <> "" Then
    Cancel = True
    i = Target.Row
    Select Case Cells(i, 3)
        Case "Process": Feuille = "Formulaire Process"
        Case "Demande de Travaux": Feuille = "Formulaire DT"
    End Select
    With Sheets(Feuille)
        .[W1] = .[W1] + 1
        Set PL = .Range("A6:A43")
        PL(.[W1]) = Cells(i, 1)
        PL(.[W1]).Offset(, 1) = Cells(i, 2)
    End With
    Cells(i, 4) = "ü"
End If
End Sub
En attendant tes explications pour la suite...
Le fichier :
 

Pièces jointes

Re : Problème avec Macro

Bonjour le Forum,

Merci à vous Robert & Modeste de votre Aide bien précieuse.
A ce stade le tableau que Robert m'a transmis fonctionne comme prévu. (c'est beaucoup mieux que moi)

Je vais essayer d'être clair pour le second stade concernant ce fichier qui a pour but de simplifier la vie des technicien lors des synthèses des études. (Lean Manufacturing oblige)

Voila le technicien valide donc les attributs analysés qui sont désormais automatiquement envoyés dans le tableau de Synthèse (Onglet Formulaire Process). Une fois ses attributs validés le tableau ne va pas forcément être remplis il peut y avoir 5, 10, 15 attributs ou dans les cas extrêmes la totalité des attributs. Ce que je désirerais c'est une macro associée à un bouton sur la feuille du tableau de synthèse qui masque automatiquement les lignes blanches restantes .

Espérant avoir été clair et vous remerciant par avance..

Amicalement,
MB
 
Re : Problème avec Macro

Bonjour Mister Binaire, Modeste, bonjour le forum,

C'est bien ce qu'il me semblait ! Tu ne voulais pas supprimer mais masquer les lignes...

Le code ci-dessous te propose de masquer/afficher les lignes au double-clic. L'utilisateur valide les attributs réalisés les uns après les autres avec un clic du bouton droit. Quand il arrive au dernier attribut qui l'intéresse il faut alors qu'il utilise le double-clic. Cela aura pour effet de cocher (avec "ü") la cellule double-cliquée puis de masquer toutes les lignes qui ne sont pas cochées.
Si l'utilisateur se rend compte qu'il lui manque un ou plusieurs attributs, il lui suffit alors de double-cliquer sur n'importe quelle cellule contenant une coche (avec "ü") pour faire apparaitre toutes les lignes à nouveau...
Donc la macro se base sur ce principe :
• Si boucle-clic sur cellule vide := Coche la cellule et masque les lignes non cochée
• Si double-clic sur cellule cochée := affiche toutes les lignes
Le code :

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim PL As Range 'déclare la variable PL (PLage)
Dim CEL As Range 'déclare la variable CEL (CELlule)

Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
'condition : si le double-clic a lieu dans la colonne 4 (=D) et dans une ligne en dessous de la ligne 11
'et si la cellule en colonne A de la cellule double-cliquée n'est pas vide
If Target.Column = 4 And Target.Row > 11 And Cells(Target.Row, 1) <> "" Then
    Cancel = True 'annule le mode édition lié au double-clic
    Select Case Target.Value 'agit en fonction de la valeur de la cellule double-cliquée
        Case "" 'cas cellule vide
            Target.Value = "ü" 'place une [coche] (=ü) dasn la cellule double-cliquée
            DL = Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 1 (=A)
            Set PL = Range("D12:D" & DL) 'définit la plage PL
            For Each CEL In PL 'boucle sur toutes les cellule CEL de la plage PL
                'si la cellule n'est pas [cochée] (avec "ü"), masque la ligne de la cellue CEL
                If CEL.Value <> "ü" Then Rows(CEL.Row).Hidden = True
            Next CEL 'prochaine cellule de la boucle
        Case "ü" 'cas cellule [cochée] (avec "ü")
           Rows.Hidden = False 'affiche toutes les lignes de l'onglet
    End Select 'fin de l'action en fonction de la valeur de la cellule double-cliquée
End If 'fin de la condition
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub
J'ai aussi modifié la procédure de RAZ pour afficher toutes les lignes...
Le fichier :
 

Pièces jointes

Re : Problème avec Macro

Merci de ton aide Robert, mais nous nous sommes mal compris c'est sur le fichier de synthèse (onglet formulaire Process que je veux que les lignes soient masquées une fois la sélection des attributs effectués.

Cependant je garde ta macro pour la page de sommaire.

Merci de ton aide..

MB
 
Re : Problème avec Macro

Bonjour Mister Binaire, Modeste, bonjour le forum,

En pièce jointe ton fichier modifié avec le code ci-dessous appliqué au composant Feuil7(FormulaireProcess) :
Code:
Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim PL As Range 'déclare la variable PL (Plage)
Dim CEL As Range 'déclare la variable CEL (CELlule)

Set PL = Range("A6:A43") 'définit la plage PL
If Application.Intersect(Target, PL) Is Nothing Then Exit Sub 'si le double-clic a lieu ailleurs que dans la plage PL, sort de la procédure
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Cancel = True 'annule le mode [édition] lié au double-clic
Select Case Target.Value 'agit en fonction de la valeur de la cellule double-cliquée
    Case Is <> "" 'si la cellule né st pas vide
        Rows.Hidden = False 'affiche toutes les lignes de l'onglet
    Case Else 'tous les autres cas
        For Each CEL In PL 'boucle sur toutes les cellules CEL de la plage PL
            If CEL.Value = "" Then Rows(CEL.Row).Hidden = True 'si la valeur de la cellule CEL est vide, masque la ligne de la cellule CEl
        Next CEL 'prochaine cellule de la boucle
End Select 'fin de l'action en fontion de la valeur de la cellule double-cliquée
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub
En gros même principe que pour le code précédent. Un double-clic dans une cellule vide, masque les lignes
un double-clic dans une cellule pleine, affiche les lignes.
Le fichier :

 

Pièces jointes

Re : Problème avec Macro

Merci Beaucoup de ton aide bien précieuse Robert !!

Je vais te solliciter si tu le permets encore une fois afin de clôturer ce projet.

Comme tu as pu le voir au début le Technicien sélectionne les lignes des attributs analysés qui sont mises 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" & "Gloss" à l'intérieur de ces onglets le technicien va rentrer ces datas pour en dégager des stats (voir dans l'onglet concerné à partir de la ligne 156). Ce que je voudrais c'est que ces stats soient envoyées directement dans l'Onglet "Formulaire Process" devant l'attribut concerné, je voudrais également que les spécifications localisées en C5 & D5 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. Peux-tu stp m'aider pour ce projet en VBA. Bien évidemment cela devra marcher pour chaque attribut sélectionné.

Merci de ton aide Robert. (en PJ le fichier actualisé)

Amicalement,
MB
 

Pièces jointes

Re : Problème avec Macro

Bonjour le fil, bonjour le forum,

Difficile de travailler sur un fichier incomplet... Et difficile de me mettre dans ta tête pour comprendre ce que toi tu comprends... Si j'ai bien compris (ce qui est très rare...), dans l'exemple en pièce jointe :
• je prend l'onglet Haze
•je copie la valeur de la cellule A1 / Haze
• je la colle dans la cellule J6 de l'onglet Formulaire Process
• je copie C5 / Haze
• je colle dans K6 / Formulaire Process
• je copie D5 / Haze
• je colle dans L6 / Formulaire Process

Bon Ok mais :
• Les stats seront-elles toujours dans la ligne 5 de l'onglet de l'attribut ?
• Plusieurs attributs se nomment : "
-------". Comment vas-tu créer les onglets correspondants à ces attributs ?
• Tu voudrais récupérer les stats comment ? un bouton, au clic du bouton-droit, au double-clic, par magie (On a la chance inouïe d'avoir Garcimore dans la forum) ?

Bref, je ne peut m'atteler à une tâche si je n'ai pas, au préalable, compris ce qu'il faut faire exactement... Ou serait-ce par flemme ?

Le fichier :
 

Pièces jointes

Re : Problème avec Macro

Merci de ta réponse Robert !!!

J'ai ré ouvert un topic Intitulé "Besoin d'un Pro pour une macro" ou je réexplique (du moins j’espère) clairement de ce que j'ai besoin.
Une piste m'a déjà été proposée mais elle fonctionne que partiellement malheureusement. (j'ai retravaillé le fichier il est plus clair)
Pour répondre à ta question oui les autres onglets seront à l'identique du premier ils porteront le nom des attributs sur quatre lettres. les stats seront envoyées vers le formulaire Process via un bouton.

Une fois encore merci de ton aide !!!

Et si Garcimore pourrait me faire un super tour de magie pour que tout marche comme prévu, je serais le Conte le plus comblé !!

Pas mal hein !!
 
- 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
23
Affichages
2 K
  • Question Question
Microsoft 365 cloud et macro
Réponses
4
Affichages
1 K
Retour