Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Pré-remplissage de champs dans UserForm

Fab117

XLDnaute Impliqué
Hello,

J'ai un souci avec mon UserForm.

Je peux :

  • Soit l'utiliser entièrement vierge (dans ce cas je mets "New" dans ma variable ObjectiveSelected). L'utilisateur rempli ensuite tout ou partie des champs qui seront sauvé dans un onglet
  • Soit l'utiliser pour mettre à jour / compléter un enregistrement déjà existant (dans ce cas je mets "Update" dans ma variable ObjectiveSelected). Les informations rentrées préalablement par l'utilisateur sont alors chargées une à une dans les différents champs du UserForm au moment de son initialisation.


Malheureusement dans ce 2ème cas, le pré-remplissage des informations se fait de manière aléatoire (il s'affiche soit avec les infos prévus, soit entièrement vierge). Je n'arrive pas à comprendre pourquoi parfois ça fonctionne et d'autres fois ça ne fonctionne pas.



J'ai mis des DebugPrint qui me montrent :

  • Qu'il a bien compris qu'il s'agissait d'une mise à jour (et que donc il doit suivre la condition mise à jour)
  • Qu'il identifie bien la bonne ligne où se trouve les données qu'il doit rapatrier
  • Qu'il arrive bien à lire les données qu'il doit rapatrier.


Par contre, elle ne termine pas dans les champs voulus



Voici un extrait de ma routine d'initialisation. Est-ce quelqu'un verrait l'erreur que j'ai commise ?
VB:
Private Sub UserForm_Initialize()

'DEBUG******************
Debug.Print "LigneAMettreAJour dans l'initialisation du Formulaire = " & LigneAMettreAJour ' Il affiche la bonne ligne
Debug.Print "ObjectiveSelected = " & ObjectiveSelected ' Il affiche la bonne valeur pour cette variable, à savoir "Update"


If ObjectiveSelected = "New" Then
    cmd_Save.Caption = "Save"
ElseIf ObjectiveSelected = "Update" Then
    cmd_Save.Caption = "Save Update"
    ' Prepopulate les différents champs
    '1er onglet
    txt_ProjectID.Value = Sheets("Global tracker").Range("A" & LigneAMettreAJour)
    Debug.Print "valeur qu'il doit reprendre (ID) : " & Sheets("Global tracker").Range("A" & LigneAMettreAJour)' Il affiche la valeur qu'il est supposé ramené dans la TextBox
...

' Les Debug.Print montrent qu'il est au bon endroit pour récupérer la première valeur pour le champ txt_ProjectID.Value




Merci d'avance et bonne soirée



Fab
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…