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

XL 2019 Problème de transferts de données formulaire à feuille

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

ceralpes

XLDnaute Nouveau
Bonjour à toutes et à tous,

Voila mon problème,
J’ai un formulaire de modification de réf. Cadastrales (UF1) appelé par le bouton2 de la feuille « EDP ».
Je charge les données propriétaire par la ListBox « ChoixNom », les TextBox concernant la propriété n°1 se chargent bien.
Mais quand je rempli les champs TextBox pour une 2ème propriété voir une 3ème propriété, après validation du bouton, les transferts vers la feuille « EDP » ne se font pas correctement.
Les communes, lieudit, section, parcelle et natureSol se font bien en colonnes B à F, avec un retour ligne (ça cela fonctionne bien) .

Mon souci se passe en colonnes AI à AR, où les données ne se transfert pas :

.Cells(Ligne, 35) = Commune_RC2 (la commune2 se transfert bien)
.Cells(Ligne, 36) = Lieudit2 (non transféré)
.Cells(Ligne, 37) = Section2 (non transféré)
.Cells(Ligne, 38) = Parcelle2 (non transféré)
.Cells(Ligne, 39) = NatureSol2 (non transféré)

.Cells(Ligne, 40) = Commune_RC3 (non transféré)
.Cells(Ligne, 41) = Lieudit3 (non transféré)
.Cells(Ligne, 42) = Section3 (non transféré)
.Cells(Ligne, 43) = Parcelle3 (non transféré)
.Cells(Ligne, 44) = NatureSol3 (non transféré)

J’ai mis un CommandButton1 sur le formulaire afin de remplir en auto les TextBox pour les tests.
Je ne comprends pas pourquoi les valeurs des TextBox ne se transfères pas pour les colonnes 36 à 44.

Avez-vous une idée pour une éventuelle correction des codes.
Ci-joint le fichier.
Merci pour votre aide,
Cordialement
Laurent
 

Pièces jointes

Bonjour,

Utilisez le mode débogage de VBAproject, vous verrez ce qui se passe 😟
1738589957293.png

Le problème vient de votre ListBox que vous remplissez avec une RowSource
Code:
ChoixNom.RowSource = Plage.Address

Du coup à chaque modification de la plage, cela vous appelle la sub ChoixNom_Click

Donc soit vous remplissez votre ListBox par code VBA, soit il faut utiliser un Flag de sortie de procédure

En entête de votre USF vous définissez un Flag de sortie
VB:
Dim FlgExit As Boolean

Ensuite dans votre Sub, vous activez le Flag à l'entrée et le désactivez à la sortie
Code:
Private Sub b_EnregistrerNewCadastre_Click()
  Dim Ligne As Integer
  Ligne = ChoixNom.ListIndex + 10 'décalage de 9 ligne depuis le haut
  FlgExit = True
  '----------------------------- Transfert Partie CADASTRE
  Application.EnableEvents = False
  With Sheets("EDP")
    .Cells(Ligne, 2) = Commune_RC1 & Chr(10) & Commune_RC2 & Chr(10) & Commune_RC3
    .Cells(Ligne, 3) = Lieudit1 & Chr(10) & Lieudit2 & Chr(10) & Lieudit3
    .Cells(Ligne, 4) = Section1 & Chr(10) & Section2 & Chr(10) & Section3
    .Cells(Ligne, 5) = Parcelle1 & Chr(10) & Parcelle2 & Chr(10) & Parcelle3
    .Cells(Ligne, 6) = NatureSol1 & Chr(10) & NatureSol2 & Chr(10) & NatureSol3
 
    .Cells(Ligne, 35) = Me.Commune_RC2
    .Cells(Ligne, 36) = Me.Lieudit2
    .Cells(Ligne, 37) = Me.Section2
    .Cells(Ligne, 38) = Me.Parcelle2
    .Cells(Ligne, 39) = Me.NatureSol2
    
    .Cells(Ligne, 40) = Commune_RC3
    .Cells(Ligne, 41) = Lieudit3
    .Cells(Ligne, 42) = Section3
    .Cells(Ligne, 43) = Parcelle3
    .Cells(Ligne, 44) = NatureSol3
  End With
   Application.EnableEvents = True
   FlgExit = False
  Unload Me
End Sub

Et dans votre ListBox
Code:
Private Sub ChoixNom_Click()
  ' On sort si flag actif
  If FlgExit = True Then Exit Sub
  '
  Dim Ligne As Integer
  Ligne = ChoixNom.ListIndex + 10 'décalage de 9 ligne depuis le haut
      
  With Sheets("EDP")
  '------------------ Transfert Feuille EDP > Formulaire MODIFICATION - PARTIE CADASTRE
    Ordre = Sheets("EDP").Cells(Ligne, 1)
    TB_Cree = Sheets("EDP").Cells(Ligne, 29)
    
    Commune_RC1 = Sheets("EDP").Cells(Ligne, 30)
    Lieudit1 = Sheets("EDP").Cells(Ligne, 31)
    Section1 = Sheets("EDP").Cells(Ligne, 32)
    Parcelle1 = Sheets("EDP").Cells(Ligne, 33)
    NatureSol1 = Sheets("EDP").Cells(Ligne, 34)
    
    Commune_RC2 = Sheets("EDP").Cells(Ligne, 35)
    Lieudit2 = Sheets("EDP").Cells(Ligne, 36)
    Section2 = Sheets("EDP").Cells(Ligne, 37)
    Parcelle2 = Sheets("EDP").Cells(Ligne, 38)
    NatureSol2 = Sheets("EDP").Cells(Ligne, 39)
    
    Commune_RC3 = Sheets("EDP").Cells(Ligne, 40)
    Lieudit3 = Sheets("EDP").Cells(Ligne, 41)
    Section3 = Sheets("EDP").Cells(Ligne, 42)
    Parcelle3 = Sheets("EDP").Cells(Ligne, 43)
    NatureSol3 = Sheets("EDP").Cells(Ligne, 44)
    
    Nom = Sheets("EDP").Cells(Ligne, 45)
    Ad1 = Sheets("EDP").Cells(Ligne, 46)
    Ad2 = Sheets("EDP").Cells(Ligne, 47)
    Ad3 = Sheets("EDP").Cells(Ligne, 48)
  '-----------------------------------------------------------------------------------
  End With
End Sub

Voilà 😉
 
Dernière édition:
Bonjour wDog66,
Merci pour les explications, j'étais dans une boucle en quelque sorte.
Je comprends mieux.
Avec un Flag de sortie, cela fonctionne parfaitement.
Merci pour votre rapidité de réponse.
Cordialement
Laurent
 
Bonjour
Tu as un probleme sur rowsource de ta liste box, tune doit pas remplir ta listbox ainsi,
Dans ton cas à chaque fois que tu écrit dans un des champs tu relance choix nom, et raz les données équivalente
rempli ta listbox avec listbox.additem
 
Merci sousou de ton intervention, c'est bien ce que j'ai indiqué dans mon précédent post 🤭
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

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