InputBox qui ne s'affiche pas
Bonsoir à tous,
Je veux avant l'affichage de mon userform "FormModif" l'ouverture d'une "InputBox" de sélection de l'ID à modifier, mais elle ne s'affiche pas, je ne comprend pas pourquoi...
Y-a-t'il une bonne âme pour me sortir de là...?
Mon code:
Option Explicit
Public LeID As Integer
Public AdresseTrouvee As Integer
Private Sub Annulation_Click()
End
End Sub
Private Sub UserForm_Initialize()
Dim i As Integer
i = 1
Do While Worksheets("Feuil1").Cells(i, 1) <> ""
ComboVille.AddItem Worksheets("Feuil1").Cells(i, 1)
i = i + 1
Loop
End Sub
Private Sub Modification_Click()
''''''Sheets(2).Unprotect
Dim i As Integer
With ThisWorkbook.Sheets("Feuil2")
i = AdresseTrouvee
.Range("B" & i).Value = Me.TBoxNom.Value
.Range("C" & i).Value = Me.TBoxPrenom.Value
.Range("D" & i).Value = Me.TBoxTelFixe.Value
.Range("E" & i).Value = Me.TBoxTelMobile.Value
.Range("F" & i).Value = Me.TBoxAdresse.Value
.Range("G" & i).Value = Me.ComboVille.Value
.Range("H" & i).Value = Me.TBoxCodPost.Value
End With
Unload Me
End Sub
Private Sub FormModif_Initialize()
Dim i As Integer
Dim PlageDeRecherche As Range
Dim Trouve As Range
Dim Valeur_Cherchee As String
On Error Resume Next
' demande le ID à rechercher
LeID = InputBox("Quel ID voulez-vous modifier ? ")
' dans quel feuille
With ThisWorkbook.Sheets("Feuil2")
'dans la première colonne de la feuille active
Set PlageDeRecherche = .Columns(1)
'*******************************
'méthode find, ici on cherche la valeur exacte (LookAt:=xlWhole)
Set Trouve = PlageDeRecherche.Cells.Find(what:=LeID, LookAt:=xlWhole)
'traitement de l'erreur possible : Si on ne trouve rien :
If Trouve Is Nothing Then
'ici, traitement pour le cas où la valeur n'est pas trouvée
MsgBox " Le ID " & LeID & " n'est pas présent dans la colonne " & PlageDeRecherche.Address
End
Else
'ici, traitement pour le cas où la valeur est trouvée
AdresseTrouvee = Trouve.Row
i = AdresseTrouvee
Me.TBoxNom.Value = .Range("B" & i).Value
Me.TBoxPrenom.Value = .Range("C" & i).Value
Me.TBoxTelFixe.Value = .Range("D" & i).Value
Me.TBoxTelMobile.Value = .Range("E" & i).Value
Me.TBoxAdresse.Value = .Range("F" & i).Value
Me.ComboVille.Value = .Range("G" & i).Value
Me.TBoxCodPost.Value = .Range("H" & i).Value
End If
End With
'vidage des variables
Set PlageDeRecherche = Nothing
Set Trouve = Nothing
''''''Sheets(2).Protect
End Sub
Merci de votre aide
atlonia, le forum,
Private Sub FormModif_Initialize() n'est pas une macro qui s'exécute automatiquement à l'ouverture du formulaire.
C'est Private Sub UserForm_Initialize() qui s'exécute automatiquement à l'ouverture du formulaire.
Mais tu peux imbriquer une suite de macro.
Je te suggère de copier le nom de la macro "FormModif_Initialize" à la fin de la macro Private Sub UserForm_Initialize(), juste avant le "End Sub".
Puis ouvre ton formulaire, "UserForm_Initialize" va s'exécuter et lancer "FormModif_Initialize".
Bonne courage
LaCéline
Bonjour LaCeline,
Merci beaucoup Pour ta solution qui fonctionne parfaitement.
chaque jour j'avance un peu plus dans mon apprentissage grâce à vous tous
Peut-tu m'expliquer plus en détail, c'est encore un peu confus pour moi ?
atlonia, le forum.
Private Sub UserForm_Initialize() exécute automatiquement le code à l'ouverture du formulaire.
Initialize est réservé à Userform
Même si tu ajoutes _Initialize à une macro telle FormModif_Initialize, ça ne donnera rien de plus qu'une simple macro.
Entre dans le code du formulaire, puis regarde en haut les deux menus déroulants.
Celui de droite donne les macros possibles pour l'objet sélectionné dans le menu déroulant de gauche. Sélectionne un item à droite, remarque le nom de la macro créée. Fais quelques essais.
LaCéline