Userform en fonction de la valeur d'une cellule

Bonjour, j'aimerais pouvoir avoir un USERFORM me permettant d'écrire un texte libre en fonction de la valeur d'une cellule.

Si par exemple en A2, j'ai la valeur X ou Y alors apparait un USERFORM et je tape mon texte librement qui sera recopié en cellule C2. Par contre si en A2, j'ai autre chose que X ou Y alors pas d'apparition d'USERFORM mais en C2 il y aura le résultat de ma formule en RECHERCHEV

Idem pour la Cellule C3 qui fera référence à la cellule A3 et ainsi de suite jusqu'à la cellule C11 qui elle fera référence à la cellule A11.

7test-v2.xlsm (10.50 Ko)

Salut,

Voici un fichier qui devrait répondre à ta demande. S'il y a un X ou un Y dans la colonne A et que tu les remplaces par une autre valeur, la formule vient à nouveau s'inscrire dans la colonne C. Ce code est sensible à la casse ; à modifier si nécessaire.

A noter que dans ta colonne L, cette partie de ta formule est inutile

ET(JOURSEM(I14;1)<>7

Amicalement.

5essai-v1.xlsm (22.18 Ko)

Merci c'est ce que je souhaitais excepté que la formule avec le RECHERCHEV ne s'exécute pas lorsque que A2 est différent de X ou de Y

Range("C" & Target.Row).FormulaR1C1 = "=IF(OR(RC[-2]=""X"",RC[-2]=""Y""),""USERFORM"",""FORMULE AVEC UN RECHERCHEV"")"

Voici la formule de base en C2:

SI(OU(A2="X";A2="Y");"USERFORM";RECHERCHEV(A2;'[RECUEIL DES TARIFS 2023_V1.xlsx]Feuil1'!$B:$H;2;FAUX))

Comme tu ne m'avais pas donné la formule à mettre en place, je ne suis pas trop étonné que je n'ai pas pu l'utiliser.

A noter que dans ta colonne L, cette partie de ta formule est inutile :

ET(JOURSEM(I14;1)<>7
4essai-v2.xlsm (29.98 Ko)

Encore merci beaucoup,

Sur mon fichier d'origine, j'ai également crée un macro permettant d'exporter l'onglet en PDF et elle me permet aussi de mettre l'onglet "MODEL" à zéro afin que l'on puisse retravailler sur un onglet vierge

Sub NomPdf()
NomOnglet = ActiveSheet.Name
Chemin = ThisWorkbook.Path & "\"
Fich = Format(Date, "yyyy-mm-dd") & "_TR_" & NomOnglet & ".pdf"
NomFiche = Chemin & Fich
    Call EditionPDF(NomFiche)
    Call detruire

    Sheets("MODEL").Range("B9:C18,M9:M18,C22:E29").ClearContents

   MsgBox "Edition du PDF Terminee et enregistree ou se trouve le fichier TITRE DE RECETTE"

End Sub

Sub EditionPDF(NomFiche)
      ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
      Filename:=NomFiche, _
      Quality:=xlQualityMinimum, _
      IncludeDocProperties:=True, _
      IgnorePrintAreas:=False, _
      OpenAfterPublish:=False

  End Sub

Est-il possible qu'après avoir effacé le contenu des cellules (A2:B14, M2:M14,C22:E29) que la formule qui se trouve en C2

RECHERCHEV(A2;'/Volumes/GoogleDrive/Mon Drive/TRAVAIL NCA/TITRE DE RECETTE/[RECUEIL DES TARIFS 2023_V1.xlsx]Feuil1'!$B:$H;2;FAUX)

Soit également recopier de C2 à C14

est-il éventuellement possible que lorsqu'en colonne A je n'ai ni de X ou de Y et bien que les colonnes B-E-F-G-I-J et K soient masquées

Merci de ton aide

J'aurais trouvé sympa que tu me dises un mot au sujet de ma proposition de suppression d'un passage inutile dans ta formule. J'ai essayé d'insister, mais rien n'y fait.

Ce n'est pas évident de travailler sur un fichier que tu refuses de fournir. Les références aux objets Excel dans tes macros montrent que tu travailles sur deux fichiers différents ; ça complique un peu les choses pour rien.

Essaie de placer le nouveau passage suivant juste après ta ligne ''ClearContents", de cette manière :

    Sheets("MODEL").Range("B9:C18,M9:M18,C22:E29").ClearContents

    Application.EnableEvents = False
    Application.DisplayAlerts = False
    Range("C2").FormulaR1C1 = _
        "=VLOOKUP(RC[-2],'C:\Volumes\GoogleDrive\Mon Drive\TRAVAIL NCA\TITRE DE RECETTE\[RECUEIL DES TARIFS 2023_V1.xlsx]Feuil1'!C2:C8,2,FALSE)"
    Range("C2").AutoFill Destination:=Range("C2:C14"), Type:=xlFillDefault
    Application.EnableEvents = True

Concernant ta question au sujet du masquage des colonnes B-E-F-G-I-J et K, je ne comprends pas très bien. Veux-tu dire que si aucune cellule de la plage A1:A1048576 ne contient X ou Y, il faudrait masquer complètement toutes ces colonnes ou faut-il juste que les cellules des colonnes colonnes B-E-F-G-I-J et K de la ligne sur laquelle il n'y a pas X ou Y soient invisibles ? Si c'est ce dernier cas, on pourrait imaginer par exemple d'écrire en blanc les textes des cellules concernées afin qu'ils soient momentanément invisibles à l'écran ou à l'impression (mais toujours visibles dans le barre en-dessus si la cellule est sélectionnée). Alors ?

Pourquoi n'écris-tu pas d'accents dans ce texte ?

 MsgBox "Edition du PDF Terminee et enregistree ou se trouve le fichier TITRE DE RECETTE"

A te relire.

Encore merci pour ton aide précieuse

Tu trouveras ci-joint le fichier source, sur lequel je travaille

  1. Je travaille d'abord sur l'onglet MODEL et renseigne les champs :
    1. De B9 à B18 si besoin
    2. De M9 à M18 en fonction de ce que j'ai rempli au par avant
    3. De N9 à N18
    4. De 09 à O18
  2. Une fois que j'ai tout rempli je clique sur Editer le TR et il y la création d'un nouvel onglet identique au model
  3. A partir de là il y a 2 possibilités
    1. Soit je clique sur PDF et à partir de là se crée un PDF et c'est à ce niveau que j'aimerais que la formule soit recopiée de D9 à D18 =SIERREUR(RECHERCHEV(B9;'/Volumes/GoogleDrive/Mon Drive/TRAVAIL NCA/TITRE DE RECETTE/[RECUEIL DES TARIFS 2023_V1.xlsx]Feuil1'!$B:$H;2;FAUX);"") après avoir tout supprimé dans les colonnes B9:D18,M9:M18,C22:E29. Comme ça ensuite je repartirais sur un MODEL vierge
    2. Soit je clique sur Email et à partir de là un email est préparé avec le TR en pièce jointe, mais dans ce cas le MODEL n'est pas remis à zéro. Penses-tu que cela soit possible pour que je puisse repartir sur un MODEL vierge?

Concernant le masquage des colonnes C-J-K-L-N-O-P lorsqu'il n'y aura pas de X ou de Y dans la colonne B uniquement entre B9 et B18 alors j'aimerais que les colonnes C-J-K-L-N-O-P soient masquées car pour l'édition du PDF par la suite cela sera beaucoup plus lisible.

3essai-v3.xlsm (111.10 Ko)

Puis-je avoir des réponses à mes deux questions ?

Qu'en est-il de ma proposition de suppression d'un passage inutile dans ta formule ? La trouve tu pertinente ?

Pourquoi n'écris-tu pas d'accents dans ce texte ?

MsgBox "Edition du PDF Terminee et enregistree ou se trouve le fichier TITRE DE RECETTE"

Salut à toi, concernant la suppression du passage inutile, c'est tout à fait pertinent et justifié.

En ce qui concerne, les accents, je ne les mets pas car je travaille à la maison sous MAC et au bureau sous Windows, et à chaque fois que je mets un accent sous MAC et qu'ensuite j'utilise se fichier sous Windows, je me retrouve avec des symboles au lieu d'avoir les accents. Voici la raison.

Est-ce que tu as pu étudier mon dernier post (avec le fichier Essai-v3)?

Bon dimanche

Salut,

Je n'ai plus étudié ton dernier fichier auparavant, puisque tu ne donnais pas suite à mon attente. Mais j'ai maintenant ouvert ton dernier fichier et constate ceci :

Lorsque je clique sur le bouton ''Editer TR" sur la feuille ''Model'' et qu'une nouvelle feuille est créée, je n'y trouve pas les boutons "PDF" et ''E-mail" indiqués dans ton texte. Question A) Où se trouvent ou où devraient se trouver ces boutons ?

En fonction de ta réponse à la question A), je saurais sur quelle feuille on se trouve au moment du lancement des macros concernées et je pourrais savoir comment modifier ton code afin de réinscrire les formules sur la bonne feuille.

Question B) Concernant le masquage des colonnes C-J-K-L-N-O-P, c'est bien uniquement pour l'impression que tu souhaites les masquer, non ? Donc si elles ne sont masquées que lors de l'impression, ça suffirait ?

Je n'ai pas compris ta question 3.2. : "Penses-tu que cela soit possible pour que je puisse repartir sur un MODEL vierge?", mais je pense que je la comprendrai lorsque tu m'auras donné les réponses aux questions A) et B).

Je pensais bien que tu n'inscrivais pas d'accents dans tes codes à cause du passage de Mac à Windows. Mais ce problème de transformation d'accents en signes bizarres ne concerne, selon moi, que les textes d'encodage et non pas les textes qui sont des "textes" au sens de VBA (donc des strings). Ainsi, je pense que si tu inscrits par exemple des accents dans le nom d'une macro, ça va créer des problèmes. Mais si tu inscrits des accents dans des ''textes'' au sens de VBA, c'est à dire dire des textes écrits entre guillemets, ça devrait passer. Mais peut-être que je me trompe. Je n'ai malheureusement pas de Mac et ne peux pas faire l'essai. Ceci juste si tu trouves que c'est moche un MsgBox avec un texte qui n'est pas écrit correctement dans notre belle langue française

A te relire. Bonnes salutations de la Suisse.

J'ai essayé de te joindre le fichier d'origine au plus juste, excepté que j'ai un soucis depuis hier lors de la sauvegarde de mon fichier excel me supprime à chaque fois mon bouton PDF et email (normalement ça devrait être comme sur la capture d'écran). C'est pour cela que j'ai essayé de recrée en dessous d'éditer TR ces 2 boutons (en espérant que cela fonctionne).

Au moment du lancement de la macro "EDITER TR", on se trouve sur l'onglet "MODEL" et un USERFORM permet de nommer le nouvel onglet qui lui sera soit enregistrer en PDF ou envoyé en pièce jointe par email. Et c'est à partir de ce nouvel onglet et lorsque que l'on appuie sur une des 2 macros que l'onglet "MODEL" est remis à 0 avec recopie de la formule =SIERREUR(RECHERCHEV(B9;'/Volumes/GoogleDrive/Mon Drive/TRAVAIL NCA/TITRE DE RECETTE/[RECUEIL DES TARIFS 2023_V1.xlsx]Feuil1'!$B:$H;2;FAUX);"") de D9 à D18

Pour la question B, effectivement je souhaiterais que les colonnes C-J-K-L-N-O-P soient masquées au moment de l'impression dès lors que de B9 à B18 il n'y a aucun X ou Y.

Et concernant les accents, malheureusement même écrit entre guillemets, le passage de MAC à WINDOWS ne corrige pas le problème

5essai-v3.xlsm (166.56 Ko)
capture d ecran 2023 04 23 a 13 46 57

Salut,

J'avais bien compris que tu pouvais créer une nouvelle feuille en cliquant sur "Editer TR" puisque je t'ai expliqué que c'est sur la nouvelle feuille créée que je n'avais pas les boutons "PDF" et "E-mail".

Sur la base de ton nouveau fichier, je constate quelle macro est lancée depuis le bouton "PDF'' et je constate que lorsque tu arrives au passage

"Sheets("MODEL").Range("B9:C18,M9:M18,C22:F29").ClearContents, ça bloque.

Tout d'abord car cette ligne comporte une erreur tout à la fin (c’est C22:F29 et non pas C22:E29), puis parce que le bout de code que je t’ai fourni ces jours passé fait référence à la feuille active qui est dans ta constellation la nouvelle feuille créée et non pas la feuille ‘’Model’’ que tu veux modifier.

J’ai alors tenté de modifier le code de manière à pouvoir agir sur la feuille ‘’Model’’ sans la sélectionner, mais je n’y suis pas arrivé. Je te propose alors une solution peut-être un peu boiteuse mais qui semble fonctionner. A un certain moment, on sélectionne la feuille ‘’Model’’ afin de pouvoir effectuer les modifications voulues puis on retourne sur la feuille nouvellement créée afin de finir le code.

Sub NomPdf()

..................................

    Dim Feuille_traitee As String
    Feuille_traitee = ActiveSheet.Name
    Sheets("MODEL").Activate
    Range("B9:C18,M9:M18,C22:F29").ClearContents
    Application.EnableEvents = False
    Application.DisplayAlerts = False
    Range("D9:H9").FormulaR1C1 = _
        "=VLOOKUP(RC[-2],'C:\Volumes\GoogleDrive\Mon Drive\TRAVAIL NCA\TITRE DE RECETTE\[RECUEIL DES TARIFS 2023_V1.xlsx]Feuil1'!C2:C8,2,FALSE)"
    Range("D9:H9").AutoFill Destination:=Range("D9:H18"), Type:=xlFillCopy
    Application.EnableEvents = True
    Sheets(Feuille_traitee).Activate

   MsgBox "Edition du PDF Terminee et enregistree ou se trouve le fichier TITRE DE RECETTE"

End Sub

Est-ce que cette solution te convient ?

Afin de ne pas tout mélanger, j’ai laissé de côté tes autres problèmes et on y reviendra quand la partie ci-dessus fonctionnera.

A te relire.

5essai-v5.xlsm (169.35 Ko)

Merci beaucoup,

Pour info, quand je clique sur PDF cela fonctionne à condition de ne pas avoir de X ou de Y de B9 à B18 sinon il y a un message d'erreur (cf capture écran) il doit y avoir un soucis sur le filtre de la colonne B.

Par contre la formule en D9 n'est pas RECHERCHEV(B9;'/Volumes/GoogleDrive/Mon Drive/TRAVAIL NCA/TITRE DE RECETTE/[RECUEIL DES TARIFS 2023_V1.xlsx]Feuil1'!$B:$H;2;FAUX) mais SIERREUR(RECHERCHEV(B9;'C:\Users\N122164\Google Drive\TRAVAIL NCA\TITRE DE RECETTE\[RECUEIL DES TARIFS 2023_V1.xlsx]Feuil1'!$B:$H;2;FAUX);"")

Et comment fais-tu pour définir le chemin d'accès RECUEIL DES TARIFS 2023_V1.xlsx]Feuil1'!$B:$H

Et est-il possible que tu m'expliques le code suivant

Range("D" & Target.Row).FormulaR1C1 = "=VLOOKUP(RC[-2],'[RECUEIL DES TARIFS 2023_V1.xlsx]Feuil1'!C2:C8,2,FALSE)"

capture
1essai-v6.xlsm (166.02 Ko)

J'ai rajouter la fonction sierreur devant le recherche V au niveau de la macro Export_PDF, et lorsque je clique sur PDF, l'onglet MODEL est bien remis à zéro si il n'y a pas de X et de Y en colonne B sur le model.

Range("D9:H9").FormulaR1C1 = _
        "=IFERROR(VLOOKUP(RC[-2],'C:\Volumes\GoogleDrive\Mon Drive\TRAVAIL NCA\TITRE DE RECETTE\[RECUEIL DES TARIFS 2023_V1.xlsx]Feuil1'!C2:C8,2,FALSE),"""")"

Par contre si il y a un X ou un Y en colonne B, alors il passage en mode debogage du MODEL du au filtre X ou Y et pas de recopie de la formules en cellule D9:D18

2essai-v7.xlsm (164.10 Ko)

Pourquoi est-ce que j'ai ce type de d'erreur au niveau du code de l'onglet MODEL (cf capture écran)

capture d ecran 2023 04 24 a 18 01 50

Je trouve sympa de commencer par des salutations, alors : Salut

Tu devrais me laisser le temps de répondre à tes questions ou alors te creuser un peu les méninges avant de poster. Tu sembles avoir répondu toi-même à ta question concernant l’instruction ‘’.FormulaR1C1’’.

Quant à la question au sujet du passage ‘’If Target <> "X" And Target <> "Y" Then’’, tu l’as posée deux fois. Le problème venait du fait que dans le passage ci-dessous, placé dans la macro ‘’NomPdf’’, la première instruction était placée en deuxième et que cette deuxième instruction justement déclenchait la macro événementielle ‘’Private Sub Worksheet_Change’’ placée sur la feuille ‘’Model’’. Mais en intervertissant ces deux lignes, le problème devrait être résolu.

Application.EnableEvents = False
Range("B9:C18,M9:M18,C22:F29").ClearContents

J’en ai profité afin de corriger le passage ci-dessous, puisque ton fichier modèle ne correspondait pas à ton fichier réel !

If Not Intersect(Target, Range("B2:B" & Range("B" & Rows.Count).Row)) Is Nothing Then

par

If Not Intersect(Target, Range("B9:B18")) Is Nothing Then

Et puis j’ai aussi ajouté un bout de macro afin de masquer les colonnes souhaitées s’il n’y a aucun X ou Y en place.

Chaleureusement.

2essai-v8.xlsm (167.60 Ko)

Bonjour à toi et encore merci de ton intervention

Concernant le Userform ainsi que la remise à zéro de l'onglet c'est juste parfait

Existe t'il un moyen pour que le PDF édité soit différent si il n'y a pas de X ou de Y ou qu'il y en ai?

Car pour l'instant si il n'y a pas de X ou de Y le PDF prend la mise en page de celui qui a des X ou des Y (ce qui induit que la mise en page n'est pas parfaite).

Ne faudrait-il pas que je crée 2 boutons différents pour le PDF (un avec les X ou Y) et (un sans les X ou Y), ou existe t'il un autre moyen?

Et cette question risque également de ce poser lors de l'envoi par email de la pièce jointe en PDF.

Salut,

Selon moi, il y a une très grande différence entre tes deux fichiers PDF ! On voit nettement sur les deux images ci-dessous qu'il y a des colonnes masquées - comme tu l'as demandé - sur la deuxième image. Afin de voir les images agrandies, tu double-cliques dessus.

Si ce n'est pas ce que tu souhaites, ne dit pas qu'il n'y a pas de différente, mais indique clairement le résultat souhaité. Si nécessaire, fournis-moi deux feuilles Excel sur lesquelles tu montres clairement la mise en page avant transformation au format PDF.

Amicalement.

image image

Bonjour à toi.

Ce que j'aurai souhaité c'est que l'impression PDF de la version sans X et Y soit centrée sur l'ensemble de la page (pour que cela soit possible, il faudrait ajuster toutes colonnes à la page lors de l'édition du PDF) en tout cas uniquement pour cette version.

Car il me semble que celle avec les X et Y et a peu près bien centrée, excepté le carré de la signature qui devrait être plus bas (je ne pense pas qu'il soit possible de faire quelque chose).

Bien à toi

Salut,

Selon moi, il est plus simple de mettre en forme le document Excel - y compris le bloc de la signature - avant de le transformer en PDF.

Peux-tu me fournir deux feuilles Excel sur lesquelles tu montres clairement la mise en page souhaitée avant transformation au format PDF, s'il-te-plait ?

A te relire.

Rechercher des sujets similaires à "userform fonction valeur"