Je vous prie

Donc OK pour les inclure dans le code VBA (et je supprimerai la feuille "PARAMS" car devenue inutile) ; mais comme dit ci-dessus, il me faut la liste complète de ces phrases, une pour chaque paramètre (donc 6 en tout) ; je ne peux rien faire sans ! je ne suis pas télépathe, et ma boule de cristal n'est pas assez performante pour le deviner !

PS : ton dernier message est devenu SANS OBJET ?

dhany

Donc OK pour les inclure dans le code VBA (et je supprimerai la feuille "PARAMS" car devenue inutile) ; mais comme dit ci-dessus, il me faut la liste complète de ces phrases, une pour chaque paramètre (donc 6 en tout) ; je ne peux rien faire sans ! je ne suis pas télépathe, et ma boule de cristal n'est pas assez performante pour le deviner !

PS : ton dernier message est devenu SANS OBJET ?

dhany

1 - Les numéros suivants ne sont pas pris en compte :

2 - Les numéros suivants sont a l'envers :

3 - Les numéros suivants sont mal placés :

4 - Les numéros suivants sont Hors service :

5 - Les numéros suivants présente une erreur :

6 - Les numéros suivants sont introuvables :

Merci

Version nec plus ultra :

4test-v-7-1.zip (70.92 Ko)

1) Pour SO, c'est fait ... et regarde ce qui se passe si tu saisis autre chose que c x o so ou C X O SO !

2) Pour les phrases, c'est fait aussi (grâce à ta liste complète) ! voir la sub WriteParam()

fais très attention quand tu modifieras les phrases, car c'est du condensé !

(ne cherche pas la feuille "PARAMS" : je l'ai supprimée, comme promis ! )

À te lire pour avoir ton avis.

dhany

Version nec plus ultra :

TEST V 7.1.xls

1) Pour SO, c'est fait ... et regarde ce qui se passe si tu saisis autre chose que c x o so ou C X O SO !

2) Pour les phrases, c'est fait aussi (grâce à ta liste complète) ! voir la sub WriteParam()

fais très attention quand tu modifieras les phrases, car c'est du condensé !

(ne cherche pas la feuille "PARAMS" : je l'ai supprimée, comme promis ! )

À te lire pour avoir ton avis.

dhany

Spandide ! pour les phrases

Juste quand je tape une autre lettre sa me fait planter le fichier, sa a marché une ou deux fois la " suppression " mais la sa plante en permanence :p

bug

ci dessus

Su mon fichier 7.1 (celui que j'ai joint), j'ai eu le même problème à un moment donné ; mais ensuite, je l'ai réglé en désactivant les événements avant la modif de la cellule, puis en les réactivant après cette modif ; alors est-ce que tu as bien mis le code VBA ci-dessous dans le module de chacune des feuilles de ton vrai classeur ?

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Count > 1 Then Exit Sub
  If Target.Column < 4 Or Target.Column > 14 Then Exit Sub
  If Target.Row < 11 Then Exit Sub
  Application.ScreenUpdating = False: Target = UCase(Target)
  Application.EnableEvents = False
  If Not Target Like "[CXO]" And Target <> "SO" Then _
    Target.Value = "" ' effacement automatique
  Application.EnableEvents = True
End Sub

Il s'agit donc des 2 instructions Application.EnableEvents : False puis True ; à part ça, je n'ai aucune autre solution à proposer !

perso, j'ai bien tout testé : c x o so en minuscule : ok ; C X O SO en majuscule : ok ; valeur différente comme a b ou c : effacé !

dhany

Oui, c'est sur le fichier que tu m'as donner je recolle le code au cas ou

Fais-le bien pour toutes les feuilles du classeur ! c'est long et fastidieux, mais pas moyen d'faire autrement, puisque le changement d'une cellule doit être détecté sur chaque feuille ; et relis mon message précédent, car je l'ai complété (on s'est croisés).

pourtant je suis sur ton fichier sa a marcher de nouveau pour planter sans cesse pareil

Aïe ! dans c'cas, j'vois pas comment faire ! peut-être est-ce dû à une différence de version d'Excel ?

J'viens d'tout réessayer de nouveau, y compris : une valeur différente de c x o so C X O SO (effacé correctement),

un appui sur la touche suppression (pour supprimer la valeur de la cellule) : j'ai aucun plantage !

Donc comme j'arrive pas à reproduire ton erreur, je ne peux pas l'arranger !

J'espère qu'un autre intervenant pourra te trouver une solution !

(le graal et la toison d'or étaient pas pour moi ! )

dhany

lol si si tu merite la toison d'or

j'ai re télécharger et essayer de nouveau pareil sa a mis du temps a planter mais sa me fait pareil

Sinon je remet le code precedent, tant pis pour le SO et l'effacement si ce n'est pas un de ses caracteres

Guillaume a écrit :

lol si si tu mérites la toison d'or

ah ! merci !!! c'est super gentil !!!


Après avoir enlevé le code qui est susceptible de causer ton plantage, tu devrais normalement avoir ceci :

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Count > 1 Then Exit Sub
  If Target.Column < 4 Or Target.Column > 14 Then Exit Sub
  If Target.Row < 11 Then Exit Sub
  Application.ScreenUpdating = False: Target = UCase(Target)
End Sub

(pour chacune des feuilles)


Mais attends, j'viens d'y penser : peut-être que le plantage est dû à Application.ScreenUpdating = False ? comme ton Excel 2016 a une interface SDI qui est différente de celle d'Excel 2007, il se peut que cette instruction ne soit pas acceptée dans le module d'une feuille ! Microsoft est très fort pour créer des incompatibilités entre les versions antérieures et les nouvelles versions ! motif : pousser à la consommation et inciter les utilisateurs à acheter la dernière version (surtout sous forme d'abonnement : c'est ultra-lucratif pour ce monopole oligarchique tout puissant sur le marché des logiciels !)

dhany

plutot ça nn ?

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Count > 1 Then Exit Sub

If Target.Column < 4 Or Target.Column > 14 Then Exit Sub

If Target.Row < 11 Then Exit Sub

If Target Like "[cxo]" Then Target = UCase(Target)

End Sub

j'aurais au moins les CXO en maj ?

plutot ça nn ?

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Count > 1 Then Exit Sub

If Target.Column < 4 Or Target.Column > 14 Then Exit Sub

If Target.Row < 11 Then Exit Sub

If Target Like "[cxo]" Then Target = UCase(Target)

End Sub

j'aurais au moins les CXO en maj ?

ok je viens de comprendre la on force tout en MAJ

Oui : c'est bien ce que j'avais fait au départ ; mais ensuite, j'me suis dit : après tout, pourquoi pas mettre n'importe quelle saisie en majuscule ? j'ai donc enlevé la partie : If Target Like "[cxo]" Then pour laisser seulement : Target = UCase(Target)


C'est bête, mais j'aurais dû te dire d'essayer le même code que celui du fichier 7.1 mais en enlevant seulement Application.ScreenUpdating = False ; ça aurait peut-être marché sans faire de plantage ?

Tu peux toujours essayer cela pour une seule feuille "TEST" ... et si c'est ok, copier / coller le même code VBA dans le module des autres feuilles "TEST" (donc pas dans le module de la feuille "RESUME", n'est-ce pas ? ).

dhany

Oui : c'est bien ce que j'avais fait au départ ; mais ensuite, j'me suis dit : après tout, pourquoi pas mettre n'importe quelle saisie en majuscule ? j'ai donc enlevé la partie : If Target Like "[cxo]" Then pour laisser seulement : Target = UCase(Target)


C'est bête, mais j'aurais dû te dire d'essayer le même code que celui du fichier 7.1 mais en enlevant seulement Application.ScreenUpdating = False ; ça aurait peut-être marché sans faire de plantage ?

Tu peux toujours essayer cela pour une seule feuille "TEST" ... et si c'est ok, copier / coller le même code VBA dans le module des autres feuilles "TEST" (donc pas dans le module de la feuille "RESUME", n'est-ce pas ? ).

dhany

ok j'essaie

Oui : c'est bien ce que j'avais fait au départ ; mais ensuite, j'me suis dit : après tout, pourquoi pas mettre n'importe quelle saisie en majuscule ? j'ai donc enlevé la partie : If Target Like "[cxo]" Then pour laisser seulement : Target = UCase(Target)


C'est bête, mais j'aurais dû te dire d'essayer le même code que celui du fichier 7.1 mais en enlevant seulement Application.ScreenUpdating = False ; ça aurait peut-être marché sans faire de plantage ?

Tu peux toujours essayer cela pour une seule feuille "TEST" ... et si c'est ok, copier / coller le même code VBA dans le module des autres feuilles "TEST" (donc pas dans le module de la feuille "RESUME", n'est-ce pas ? ).

dhany

ok j'essaie

Je supprime tout ?

Application.ScreenUpdating = False: Target = UCase(Target)

Ah non ! non, non !!!

Tu supprimes seulement : Application.ScreenUpdating = False: (dont le caractère deux-points)

et tu laisses : Target = UCase(Target)

Ah non ! non, non !!!

Tu supprimes seulement : Application.ScreenUpdating = False: (dont le caractère deux-points)

mais tu laisses : Target = UCase(Target)

ok toujours une erreur et quand l'appuis sur debogage il me sort cette ligne en jaune

Target.Value = "" ' effacement automatique

Ne tiens pas compte du texte précédent : j'me suis mélangé les pinceaux dans les versions !!!

Peux-tu poster ta sub Worksheet_Change() en entier ?

Mais essaye aussi : Target.Value = UCase(Target.Value)

Rechercher des sujets similaires à "prie"