Saisie semi-auto sur liste déroulante désactivée

Bonjour le forum,

Voilà je rencontre un léger soucis, et malheureusement, malgré mes recherches sur la toile, je n'ai pas trouvé de solution, je me tourne donc vers vous ô grands dieux de l'excel afin de voir si vous n'auriez pas une astuce qui traine dans une de vos manches

Bon j'ai fais un gros ménage dans le fichier joint afin de ne laisser que ce qui nous intérrèsse dans le cas présent (donc ne pas tenir compte du rendu graphique héhé) :

Donc onglet "Menuiserie" deux cellules avec liste déroulante lièes chacunes avec une liste différente (sur les deux autres onglets).

Pour ma saisie semi-auto, j'utilise la formule suivante en R5 (en changeant les cellules et les noms de plages nommées pour l'autre) :

=SI(R5<>"";DECALER(e_noms;EQUIV(R5&"*";g_noms;0)-1;;SOMME((STXT(g_noms;1;NBCAR(R5))=TEXTE(R5;"0"))*1));g_noms)

Celle-ci fonctionne très bien, cependant, le problème que je rencontre est le suivant, à chaque réouverture du fichier, j'ai bien ma liste déroulante, mais la saisie semi-auto ne fonctionne pas, je suis obligé de refaire (pour chacune des deux cellules)

"Données => Validation des données => Validation des données => OK" et la miracle, tout va bien et remarche.

Quelqu'un aurait-il déjà rencontrer et solutionner ce genre de désagrément ? Cela pourrait-il venir de ma formule ?

Merci d'avance.

96essai.xlsm (150.54 Ko)

Bonjour,

Bizarre car à l'ouverture j'avais le même souci. En enregistrant le fichier avec extension XLS, je n'ai plus de problème.

Vois donc ton fichier en retour.

Au fait pourquoi fusionner les colonnes G et H alors qu'il n'y aucune raison. Comme je le dis dans de nombreux fils, c'est à éviter. Cela pose toujours des soucis lorsque l'on fait intervenir ces cellules dans des codes VBA.

AMicalement

84essai.zip (67.76 Ko)

Bonjour

Pourquoi donc utilises-tu des formules dans les validations de listes, d'autant que les listes sont déjà nommées.

Essaie en remplaçant la formule de validation en D5 par

=l_noms

et en G5 par

=g_noms

Cordialement

66essai.xlsm (86.48 Ko)

Bonjour Amadeus,

Pourquoi donc utilises-tu des formules dans les validations de listes, d'autant que les listes sont déjà nommées.

Je pense qu'il fait cela afin de taper la première lettre de ce qu'il cherche. De cette manière la liste ne contiendra que les noms contenant cette lettre.

Bonne journée

Amicalement

Dan, Amadéus,

@Dan

le problème étant que je dois malheureusement rester en .xslm vu que mon fichier contient de nombreuses macros sinon effectivement sur to nretour en .xls, cela marche comme lorsque je revalide les données

Pour les cellules fusionnées, en effet elles ne servent à rien la, mais j'ai fais du ménage dans le fichier pour ne laisser que ce qui concernait le problème, mais celui ci, servant à éditer des devis assez précis, je suis "obligé" de jouer avec les cellules fusionnées pour la mise en page.

@Amadéus :

Oui comme le dit Dan, les formules me servent à faire cette fameuse saisie semi-automatique que je dois revalider à chaque ouverture du fichier. Si tu as juste lancer le fichié sans revalider les données, tu n'avais que la liste déroulante sans la saisie semi-auto, mais ce n'est pas le but "final" de la chose.

Re,

As-tu essayé en vidant tes cellules avant de fermer ton fichier ??

Pour les cellules fusionnées et présentation de page, peut être tout de même élargir tes colonnes serait une bonne chose. Mais bon à voir avec toutes les données sur ta feuille

Amicalement

Bonjour

J'ai rencontré le même souci sur ce fil :

https://forum.excel-pratique.com/excel/visee-automatique-de-liste-deroulante-vers-bonne-valeur-t23446.html

dans lequel je pensais régler le problème avec une macro Private Sub Worksheet_SelectionChange(ByVal Target As Range) dans laquelle je remettais la validation de données, mais il reste un problème que je n'arrive pas à résoudre.

Donc, pour résumer, la validation fonctionne sous .xls mais pas sous .xlsx (il faut repasser par DONNEES ==> Validation et juste faire OK)

Amicalement

Nad

re,

Oui, j'ai essayé en vidant les cellules avec une macro associée à un bouton sur le fichier original, avec la touche retour, avec click droit "effacer le contenu",... rien n'y fait.

J'ai essayé de contourner la chôse avec une maccro qui se lancerais à l'ouverture du classeur et irai re valider automatiquement les données, donc ne sachant pas trop comment m'y prendre, j'ai fais cela avec l'enregistreuse de macro ce qui me donne ce code :

Sub Workbook_Open()

    Range("D5").Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:= _
        "=SI(D5<>"""";DECALER(d_noms;EQUIV(D5&""*"";l_noms;0)-1;;SOMME((STXT(l_noms;1;NBCAR(D5))=TEXTE(D5;""0""))*1));l_noms)"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = False
        .ShowError = False
    End With
    Range("G5:H5").Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:= _
        "=SI(G5<>"""";DECALER(e_noms;EQUIV(G5&""*"";g_noms;0)-1;;SOMME((STXT(g_noms;1;NBCAR(G5))=TEXTE(G5;""0""))*1));g_noms)"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = False
    End With
End Sub

A l'ouverture du classeur ce code me donne une erreur d'execution car comme tu peux le voir, l'enregistreuse a automatiquement doublé toutes les " de mes deux formules.

Et si j'enlève les "" superflues, Excel m'indique qu'il attend une fin d'instruction car il ne doit plus réussir à savoir ce qui fait parti de la formule ou non :

.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:= _
        "=SI(D5<>"";DECALER(d_noms;EQUIV(D5&"*";l_noms;0)-1;;SOMME((STXT(l_noms;1;NBCAR(D5))=TEXTE(D5;"0"))*1));l_noms)"

(sur le 0 de "0")

@Nad Est-ce ce problème là dont tu parles ?

Re,

Essaie comme ceci :

Private Sub Workbook_Open()
With Range("D5").Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
    xlBetween, Formula1:= _
    "=IF(D5<>"""",OFFSET(e_noms,MATCH(D5&""*"",g_noms,0)-1,,SUM((MID(g_noms,1,LEN(D5))=TEXT(D5,""0""))*1)),g_noms)"
    .IgnoreBlank = True
    .InCellDropdown = True
    .ShowInput = True
    .ShowError = True
End With
End Sub

Amicalement

Re,

So my Excel is very fluant in english, it's ok

Bon j'ai juste remodifié en mettant

.ShowError=false

sinon il n'était pas content, mais en dehors de ça, cela à l'air de marcher, je réadaptes tout ça sur mon fichier complet demain matin, et je te tiens au courant.

Bon désolé du double post, mais comme promis, je reviens donner des nouvelles.

Merci bien Dan, après adaptation sur le fichier original, cela marche impec.

Bonjour

Le fil est clos mais il se passe quelque chose d'étrange dans le fichier dont je parlais plus haut.

Même problème rencontré

- Je met la macro dans ThisWorkbook

Private Sub Workbook_Open()
With Range("D5").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=MaFormule"
.ShowError = False
End With
End Sub
  • Je ferme en enregistrant
  • J'ouvre
  • OK : la liste fonctionne

Cependant, je me rends compte que je n'ai pas modifié la cellule concernée dans le code (dans mon fichier, la liste est en I11) - Donc, malgré le code "faux" ma liste fonctionne

  • Je supprime toutes les macros
  • Je ferme en enregistrant
  • J'ouvre
  • OK : la liste fonctionne

J'ai fait plusieurs tests. Donc, en définitive, même en étant sur .xlsx ou .xlsm, le problème ne se présente plus.C'est à ne rien y comprendre.

Quelqu'un peux-t'il tester sur ce fichier SVP ?

Merci

Amicalement

Nad

Salut Nad,

Ton fichier fonctionne chez moi, autant la liste que la saisie semi-auto en L11, par contre de ne pas avoir changé la cellule dans la procédure, cela t'as recréé la liste avec saise semi-auto (qui fonctionne aussi du coup lol) en D5.

Après je pense que cela marche peut-être car quand tu fais une validation manuelle, il y a une case à cocher "Appliquer ces modifications aux cellules de paramètres identiques", et que la procédure doit surement valider cette case à cocher lors de l'ouverture, les deux formules étant identiques sur les deux cellules, du coup ca te valide aussi celle en L11.

Re

Je suis d'accord avec toi, mais là où je suis étonnée c'est qu'il n'est plus nécessaire de revalider la validation de données. (ce qui était le problème initial)

Nad

re,

Effectivement, je n'avais pas fait attention que tu avais supprimé les maccros à l'ouverture. J'avoue que je ne comprends pas non plus, que la saisie semi-auto fonctionne correctement malgré tout.

Peux-tu tester ton fichier en supprimant la macro ?

Nad

Re,

J'ai testé le fichier "doudounours_v03" mais je ne vois pas de code.

Zirak, c'est juste une idée mais mets ta formule dans inerstion / nom / definir et donne lui un nom (ex : Maformule)

ensuite clique sur D5 et va dans la validation de données - Liste et colle --> =Maformule

Refais un test

Si concluant cela voudrait dire que dans "validation" qu'il vaut mieux utliser un nom dans la liste déroulante plutôt qu'une formule

A te relire

Me revoilà,

Donc Nad, si j'enlève la procédure ayant lieu à l'ouverture ca ne marche plus chez moi, ton fichier est donc magique

@ Dan, effectivement, en faisant comme tu l'indique et en nommant ma formule ca marche aussi, sans avoir besoin de la procédure qui se lance à l'ouverture, c'est bon à savoir.

Dan a écrit :

J'ai testé le fichier "doudounours_v03" mais je ne vois pas de code.

Zirak, c'est juste une idée mais mets ta formule dans inerstion / nom / definir et donne lui un nom (ex : Maformule)

ensuite clique sur D5 et va dans la validation de données - Liste et colle --> =Maformule

Refais un test

Si concluant cela voudrait dire que dans "validation" qu'il vaut mieux utliser un nom dans la liste déroulante plutôt qu'une formule

A te relire

Je n'ai pas compris la manip exacte de Dan (car dans excel 2007 les menus sont différemment positionnés) mais en tout cas avec ou sans la macro, le fichier fonctionne correctement par rapport à ma demande.

Merci a vous !

A+

Rechercher des sujets similaires à "saisie semi auto liste deroulante desactivee"