Bonjour,
Je suis en train de réaliser un morceau de code dans lequel j'importe des données venant d'un autre classeur et les copies dans une feuille de mon classeur actuel. Pour cela j'ai réalisé une fenêtre userform dans laquelle se trouvent plusieurs éléments. Suite à une importation l'évènement change de mes textbox n'a plus l'air de fonctionner.
Je m'explique, l'importation des données dans le classeur de travail se passe bien. Par contre, lorsque cette opération est terminée j'aimerai que lors d'un changement de valeur dans une textbox celle ci soit traitée. Le programme devrait donc passer dans l'évènement "change" pour vérifier la cohérence de la valeur insérée. Ce n'est visiblement pas le cas puisqu'en mettant une valeur erronée il ne la modifie pas. Si je n'importe pas les données, il me bloque bien ma valeur en conséquence.
J'ai oublié de préciser que l'userform reste afficher tout au long de l'opération de copie et n'ai donc ni ouverte ni fermée, je ne sais pas si ça a son importance ou non.
Merci pour vos réponses
Je rajoute un morceau de code :
Je suis en train de réaliser un morceau de code dans lequel j'importe des données venant d'un autre classeur et les copies dans une feuille de mon classeur actuel. Pour cela j'ai réalisé une fenêtre userform dans laquelle se trouvent plusieurs éléments. Suite à une importation l'évènement change de mes textbox n'a plus l'air de fonctionner.
Je m'explique, l'importation des données dans le classeur de travail se passe bien. Par contre, lorsque cette opération est terminée j'aimerai que lors d'un changement de valeur dans une textbox celle ci soit traitée. Le programme devrait donc passer dans l'évènement "change" pour vérifier la cohérence de la valeur insérée. Ce n'est visiblement pas le cas puisqu'en mettant une valeur erronée il ne la modifie pas. Si je n'importe pas les données, il me bloque bien ma valeur en conséquence.
J'ai oublié de préciser que l'userform reste afficher tout au long de l'opération de copie et n'ai donc ni ouverte ni fermée, je ne sais pas si ça a son importance ou non.
Merci pour vos réponses
Je rajoute un morceau de code :
Code:
Private Sub Importation_Config_Click()
Application.ScreenUpdating = False
' Sauvegarde du nom de fichier actuel
file_calage = ActiveWorkbook.Name
' Récupération du chemin du fichier à importer
fileToOpen = Application.GetOpenFilename(Title:="Ouvrir une configuration existante", filefilter:="Classeur Excel, *.xls")
' Lorsqu'on clique sur "annuler" on sort de cette fonction
If fileToOpen = "Faux" Then
Exit Sub
' Procédure normal de récupération des données
Else
' Ouverture du fichier à importer
Workbooks.Open Filename:=fileToOpen
' Récupération du nom de fichier *.xls
file_import = nettoyer_chemin(fileToOpen)
' Réalisation du copié collé spécial ne prennant en compte que les valeurs
...
' Fermeture du fichier à importer
...
' Insertions des valeurs récupérées dans les TextBox de l'userform Calage_p1
...
With Calage_p2
.Copie_Donnees
' Remise en place des valeurs dans les textbox des userforms
...
End With
Traitement_loi_AAC
' Utilisation d'une fonction d'une autre userform
Calage_p2.Affectation_Valeurs_Classeur
Mise_en_Forme_Loi_Levee
Application.ScreenUpdating = True
' Message rappellant quelle configuration vient d'être insérée
MsgBox "Vous avez charger la configuration suivante :" & vbCrLf & vbCrLf & fileToOpen
End If
End Sub
___________________________________________________________________________________________________________________________
Private Sub Levee_Adm_Change()
' Test si la valeur insérée est supérieure à la levée max
LVA_max = Replace(Round(Application.WorksheetFunction.Max(Worksheets("Loi_Levée_Soupapes").Range("B4:B2000").Value), 2), ",", ".", vbTextCompare)
If Val(Levee_Adm_PMH.Text) > LVA_max Then
Levee_Adm_PMH.Text = LVA_max
End If
End Sub
Dernière édition: