Userform en fonction de la valeur d'une cellule
Salut
Tu trouveras ci-joint un fichier avec les 2 feuillets avec la mise en page souhaitée.
Avec les X et les Y j'ai rajouté 20 lignes supplémentaires avant le bloc de signature (afin de faire redescendre ce bloc)
Et pour la mise en page sans les X et les Y, j'ai uniquement ajuster les colonnes à la page
Encore merci de ton aide
Re-bonjour,
Je ne comprends pas très bien ta logique. Tu as une feuille ''Model'' sur laquelle tu n'as pas ajusté l'échelle à la grandeur d'une page et sur laquelle tu as le bloc signature en colonnes G à Q. Et dans tes exemples de résultats finaux, tu as deux fois les feuilles ajustées à l'échelle d'une page et les blocs signature en colonnes B à F !
Ne serait-ce pas plus logique de tout d'abord changé ta feuille ''Model'' avec ces deux modifications déjà en place et il ne resterait plus qu'à modifier par macro le nombres de lignes lorsqu'il y a des X et de Y, selon ton souhait ?
A propos, as-tu réellement besoin d'autant de lignes vides ou ne servent-elles qu'à écarter le bloc signature vers le bas ? Si c'est bien cette deuxième option, il serait plus simple d'agrandir une seule ligne en hauteur. Merci de préciser cela.
En annexe un fichier dans lequel toutes les feuilles utiles sont concentrées.
A te relire.
Bonjour et encore merci
J'ai essayé de retravailler le model.
Sans le X et le Y, l'impression semble correct sans faire de modifications.
Par contre en ce qui concerne l'impression avec le X ou le Y, il faudrait que
- Taille de police à 18 des lignes de 9 à 43
- Hauteur de ligne à 43 pour les lignes de 20 à 43
J'espère avoir compris ce que tu me demandais
Bonne journée à toi
Salut,
Je pense que tu as compris ce que j'ai voulu t'indiquer, puisque tu as modifier la base de ta feuille ''Model''.
Dans le fichier ci-joint, les feuilles avec X ou Y sont modifiées selon tes souhaits (Taille de police et hauteur des lignes). Tu as indiqué vouloir une hauteur de 43, mais ce n'est pas possible. C'est soit 42.75 soit 43.50. Je présume donc que tu as exprimé ta hauteur en pixels et j'ai donc indiqué dans la macro que tu voulais une hauteur de 32.25, ce qui correspond à 43 pixels.
Bizarrement, ton code dans le version 10 ne remet plus la feuille ''Model'' à zéro !
Amicalement.
Bonjour,
Cela marche à merveille, c'est exactement ce que je souhaitais.
J'aimerais avoir également 2 renseignements :
- Est-il possible de mettre un mot de passe sur l'onglet "MODEL" de tel manière que les formules dans les différentes cellules ne soient pas touchées par erreur.
- Est-il possible de mettre un chemin d'accès générique pour le fichier se trouvant dans la formule rechercheV, car chaque utilisateurs va mettre une copie de ce fichier (V11 et le recueil des tarifs) dans un dossier spécifique à chaque utilisateurs. Est-ce que je devrais configurer pour chaque utilisateurs modifier le chemin d'accès en vba
"=IFERROR(VLOOKUP(RC[-2],'C:\Users\N122164\Google Drive\TRAVAIL NCA\TITRE DE RECETTE\[RECUEIL DES TARIFS 2023_V1.xlsx]Feuil1'!C2:C8,2,FALSE),"""")"Bonne journée
Wow, je suis dépassé !
1) Pour ton premier problème, je me suis dit qu'en plaçant l'instruction UserInterfaceOnly:=True à l'ouverture du fichier - qui permet le déroulement des macros même sur une feuille protégée - ça devait suffire. J'ai donc tout d'abord testé cette instruction sur la seule feuille ''MODEL" (passage mis en commentaire, en vert, ci-dessous), puis, comme ça ne résolvait pas le nouveau problème décrit ci-dessous, j'ai testé cette instruction sur toutes les feuilles du fichier :
Private Sub Workbook_Open()
'Sheets("MODEL").Protect , UserInterfaceOnly:=True
Dim i As Byte
For i = 1 To Sheets.Count
Sheets(i).Protect , UserInterfaceOnly:=True
Next i
End SubLe nouveau problème indiqué ci-dessus est qu’après avoir protégé ta feuille ‘’MODEL’’ et d’en avoir créé une copie, il y a un message incompréhensible qui apparait lorsque tu sélectionnes à nouveau la feuille ‘’MODEL’’ :
J’ai donc tenté de placer un code événementiel sur la feuille ‘’MODEL’’ qui se déclenche lors de la sélection de cette feuille, mais rien n’y fait, le message d’erreur ci-dessus apparait malgré tout.
Private Sub Worksheet_Activate()
Application.DisplayAlerts = False
End SubAlors, soit ce message ne te gênes pas plus que tant, soit tu dois demander de l’aide ailleurs.
2) Pour cette deuxième demande, je dois aussi avouer ne pas connaitre de solution afin de modifier cette formule une fois pour toutes. Mais si le fichier ‘’Recueil des tarifs’’ est placé dans le même dossier que le fichier de base, il y aurait la possibilité de contourner le problème par macro. Alors est-ce le cas ?
Pour tes deux problèmes, si mes débuts de solutions ne te conviennent pas, je te conseille d’ouvrir de nouveaux fils, peu de membres s’intéressant à des discussions déjà bien entamée telle que celle-ci.
Cordialement.
Déjà, je tenais à te remercie pour ton aide.
En ce qui concerne le problème de mot de passe, on va oublier car il me semble que c'est bien trop compliquer.
Par contre, pour ma 2ème question, chaque utilisateur va mettre sous son propre disque dur le fichier de base V11 et le recueil des tarifs dans le même dossier, ce qui veut dire que le problème peut être corrigé par une macro? Car malheureusement certains n'ont pas accès au serveur ou je comptais mettre le recueil des tarifs.
Bien cordialement.
Tu me dis que chaque utilisateur va mettre le recueil des tarifs dans le même dossier. Tu veux bien dire dans le même dossier que le fichier de base ? Si oui, grâce à l'instruction ThisWorkbook.path, (soit ''le chemin de ce fichier'') on sait où se trouve le fichier "Recueil des tarifs" et on peut aller le lire par macro à la place de le lire par formule.
Mais si chaque utilisateur met le fichier "Recueil des tarifs" dans le même dossier - par exemple le "Dossier 'X" - chaque "Dossier X" de chaque utilisateur sera à un chemin différent, par exemple pour Jean et Raoul :
"C:\JEAN\Chemin_de_Jean\Dossier_X\Recueil des tarifs"
"C\RAOUL\Cheminparciparla\Etaussiparici\Dossier_X\Recueil"
Dans ce dernier cas, comme pour la formule, il faudrait modifier la macro en fonction de chaque chemin personnel ou indiquer dans un coin du fichier de base le chemin personnel afin que la macro puisse aller lire cette information personnelle, mais c'est aussi assez compliqué.
En encore une autre piste : à la place d'avoir le fichier "Recueil des tarifs" séparé du fichier de base, pourquoi ne pas placer la feuille concernée directement dans le fichier de base ? Mais si le "Recueil des tarifs" change trop souvent, cette solution est moins intéressante.
De mon côté, je te fais volontiers la démonstration a) de la lecture d'un fichier depuis un autre par macro s'ils sont placés dans le même dossier ou b) - plus compliqué pour vous - si l'on peut indiquer le chemin du "Recueil" sur le fichier de chaque utilisateur ou c) si tu veux modifier la macro de chaque utilisateur pour y indiquer le chemin personnel de son ''Recueil".
A toi de dire
Bonjour Snowkite, Yvouille, le forum,
Une idée au hasard : j'ai déjà fait un fichier qui, à l'ouverture, écrivait dans une cellule, le nom du chemin du fichier en cours.
Ainsi, les gens plaçaient le fichier où ils le désiraient et le chemin était toujours bon.
Bastr
Je pense que je vais être dans l'obligation de modifier le chemin d'accès pour chaque utilisateur, mais je vais avant quand même essayer de mettre le recueil des tarifs sur le même fichier de base, voici maintenant la formule que j'ai en
D9 =SIERREUR(RECHERCHEV(B9;RECUEIL!B:H;2;FAUX);"")
As-tu la possibilité de me donner le code pour que je puisse le remplacer dans la macro, ou est-ce que celui-ci est ok
Range("D" & Target.Row).FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-2],'RECUEIL'!C2:C8,2,FALSE),"""")"Encore merci beaucoup de ton aide.
Bonjour,
A bastre
Le chemin d'un fichier peut être trouvé à n'importe quel moment du déroulement d'une macro grâce à l'instruction que j'ai indiquée dans mon fil précédent : ThisWorkbook.path. Et notre problème ici n'est pas d'avoir le chemin du fichier en cours, mais celui d'un fichier annexe. Toutefois, si les deux fichiers sont dans le même dossier chez n'importe lequel des utilisateurs, on pourrait connaitre le chemin personnel du fichier annexe de chaque utilisateur par l'intermédiaire de l'emplacement de son fichier de base. Mais selon Snowkite, ce n'est pas le cas chez ses utilisateurs.
A Snowkite
Oui, ta formule - probablement enregistrée par l'enregistreur de macro avant transformation - semble bien correct.
Bon dimanche.