Userform qui disparait

Bonjour,

j'ai deux petits soucis sur un fichier Excel

- Quand je supprime la ligne 4 par exemple, les userform des colonnes G et L ne viennent plus... Il faut que j'enregistre, quitte et ré-ouvre le document

- Le champ code postal est vu comme une erreur "texte/nombre" et je ne parviens pas à la corriger

Qui peut m'aider et me donner les explications pour que j'intègre la correction dans le fichier original ?

Merci

Akhlan

12a-corriger.xlsm (273.03 Ko)

Bonjour,

pour la première question : l'erreur est du à la sortie prématurée de la sub événementielle s'il y a plus d'une cellule de sélectionnée, mais hélas pour vous la surveillance événementielle n'est pas remise en route, je vous propose de modifier la place de cet arrêt à l'issu du test du nombre de cellule sélectionnée :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    On Error GoTo fin

    If Target.Count > 1 Then Exit Sub
    Application.EnableEvents = False

Pour la deuxième question un TextBox comme son nom l'indique c'est du texte, si vous voulez que sa retranscription dans la feuille donne un nombre alors il faut utiliser (je crois) range("A1").value = Cdbl(TextBox1.Value) pour les décimaux et je crois que c'est CInt pour les entiers, mais là j'ai un gros doute !

@ bientôt

LouReeD

Le premier point est corrigé, merci LouReeD (j'adore ce groupe ;) ) par contre je ne vois pas ou mettre le second point....

Pour la deuxième question un TextBox comme son nom l'indique c'est du texte, si vous voulez que sa retranscription dans la feuille donne un nombre alors il faut utiliser (je crois) range("A1").value = Cdbl(TextBox1.Value) pour les décimaux et je crois que c'est CInt pour les entiers, mais là j'ai un gros doute !

Bonjour,

Ce que LooReed veut vous dire au sujet de Cdbl ou Cint c'est par rapport à votre code Lisbox1_click

ActiveCell = Me.ComboBox1

Mettez ceci

ActiveCell = CInt(Me.ComboBox1)

Par contre pour votre code selectionchange, j'aurais évité le application.enableevents.

Pour d'autres questions LooReed va revenir vers vous

Cordialement

Un grand merci à vous deux, ça fonctionne ;)

Bonsoir, Dan,

il est vrai que beaucoup de codeurs utilisent plutôt des variables "interrupteur" plutôt que Application.EnableEvents = False, mais si le code est simple et bien structuré, alors c'est une fonction fort pratique. Mais qu'est-ce qu'une variable "interrupteur" ou Flag, ou bien autre chose ?

Si on reprend votre code : on dimensionne une variable boolean au niveau du module de feuille puis dans le code événementielle on passe cette variable à True dès qu'on aura besoin de faire une modification sur cette feuille. En début de code on fait un test de valeur de cette variable, si True on quitte prématurément pour stopper "la boucle infinie" qui se prépare si elle est à FALSE alors on applique le code :

Dim EnCours As Boolean

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    If EnCours then Exit Sub ' si on est en train de travailler sur la feuille on quitte

    On Error GoTo fin

    If Target.Count > 1 Then Exit Sub
' début du code qui va engendrer des modifications sur la feuille 
    EnCours = True
' le reste du code
' on a fini avec les éventuelles modification de la feuille
    EnCours = False

End Sub

Comme cela on ne touche pas à Application.EnableEvents et on ne risque pas de se retrouver avec une inerte si ce paramètre reste à FALSE

@ bientôt

LouReeD

Rechercher des sujets similaires à "userform qui disparait"