Microsoft 365 Formulaire de modification

kyasteph

XLDnaute Occasionnel
Bonjour
J'ai créé un formulaire de modification ,à partir duquel je rappelle toutes les données d'une ligne:
La recherche se fait à partir de la combobox "ChoixN_Eng" (chaque ligne de chaque tableau correspond à un numéro enregistrement unique).
Je dispose de six(6) onglets dans mon classeur sur lesquels j'effectue des saisies et modifications.
Mon userform fonctionne correctement sur certains onglets tel que l'onglet "Gestion_Débiteur", par contre sur certains tel que "Gestion_Créancier"; "JAL_OD"; "JAL_AN", cela ne fonctionne pas.
En effet ,après le chois dans la combobox "ChoixN_Eng", cela me génère une erreur.

J'ai beau chercher je n'arrive pas à le résoudre, quelqu'un peut il m'aider s'il vous plait.
 

Pièces jointes

  • Essai_Modifier.xlsm
    69.3 KB · Affichages: 33

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Kyasteph,
Un Textbox renvoie .. un texte. Or le texte "1211" n'est pas trouvé puisque seule la valeur numérique 1211 est présente.
J'ai remplacé
Code:
ligneEnreg = Sheets("JAL_AN").[B:B].Find(ChoixN_Eng, LookIn:=xlValues).Row
par
VB:
ligneEnreg = Application.Match(Val(ChoixN_Eng), Sheets("JAL_AN").Range("B1:B1000"), 0)
mais il y a d'autres erreurs à résoudre, en particulier les cellules vides ou textbox vides.
Mais au moins ça marche pour le remplissage initial.
 

Pièces jointes

  • Essai_Modifier.xlsm
    61.4 KB · Affichages: 4

Dudu2

XLDnaute Barbatruc
Bonjour,
Il faut aussi se méfier du Application.Transpose qui peut réduire un tableau à 2 dimensions vers un tableau à une dimension quand la 2ème dimension est 1 (range d'une seule ligne par exemple):
t(1 to 2, 1 to 1) -> t(1 to 2).
 

cp4

XLDnaute Barbatruc
Bonjour Kyasteph,
Un Textbox renvoie .. un texte. Or le texte "1211" n'est pas trouvé puisque seule la valeur numérique 1211 est présente.
J'ai remplacé
Code:
ligneEnreg = Sheets("JAL_AN").[B:B].Find(ChoixN_Eng, LookIn:=xlValues).Row
par
VB:
ligneEnreg = Application.Match(Val(ChoixN_Eng), Sheets("JAL_AN").Range("B1:B1000"), 0)
mais il y a d'autres erreurs à résoudre, en particulier les cellules vides ou textbox vides.
Mais au moins ça marche pour le remplissage initial.
Bonsoir @kyasteph ,@Dudu2 ,@sylvanu ,
Désolé de m'incruster. Je suis depuis ce matin cette discussion.
J'ai essayé de modifier les codes de kysteph mais je suis resté confronté au problème de la fonction Find qui ne trouve pas la valeur de la combobox. J'ai fait des recherches et beaucoup de tests sans succès.

@sylvanu: Ta proposition contourne le problème rencontrer avec le fonction Find. Cependant, je n'ai pas trouvé la cause pour quelle raison elle ne fonctionnait pas.
En effet, notre ami a formaté sa colonne (col2) au format numérique avec séparateur de décimal.
Or, pour un nombre < à 999, il est trouvé. Alors, j'ai fait le petit fichier ci-joint où la fonction Find fonctionne pour différents format de cellule.

Voilà pour mon grain de sel. En espérant, que quelqu'un décèle le pourquoi du non fonctionnement correct du fichier de kysteph.

Bonne soirée.
 

Pièces jointes

  • Find Nombres avec separateur de milliers.xlsm
    20.4 KB · Affichages: 17

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir,
@cp4
Si dans le fichier de kyasteph vous mettez le N°Enreg 1 234 en format standard ( 1234 ), sa fonction marche. Je pense qu'issue d'une TextBox 1234 est reconnu automatiquement par le VBA comme un nombre mais que 1 234 est reconnu comme une chaine de caractères. D'où le problème.
Et voulant conservé le format initial je suis passé par Match avec Val.

On le voit d'ailleurs dans votre fichier le "nombre" 3 210 n'est pas reconnu car dans la textbox il y a 3210.
2020-11-13 20_01_47-Window.jpg

Tout du moins c'est mon analyse. ;)
 

Pièces jointes

  • 1.jpg
    1.jpg
    12.9 KB · Affichages: 10

cp4

XLDnaute Barbatruc
Bonsoir,
@cp4
Si dans le fichier de kyasteph vous mettez le N°Enreg 1 234 en format standard ( 1234 ), sa fonction marche. Je pense qu'issue d'une TextBox 1234 est reconnu automatiquement par le VBA comme un nombre mais que 1 234 est reconnu comme une chaine de caractères. D'où le problème.
Et voulant conservé le format initial je suis passé par Match avec Val.

On le voit d'ailleurs dans votre fichier le "nombre" 3 210 n'est pas reconnu car dans la textbox il y a 3210.
Regarde la pièce jointe 1085017
Tout du moins c'est mon analyse. ;)
Je ne comprends chez moi fonctionne correctement. Demo

Format.gif


Merci pour la rapidité de ton retour.
 

cp4

XLDnaute Barbatruc
Salut le fil,@sylvanu,@cp4

Il faut faire un find sur xlformulas:
ligneEnreg = Sheets("JAL_AN").[B:B].Find(ChoixN_Eng, Range("b1"), LookIn:=xlFormulas).Row
Bonsoir Fanch55 ;),

J'ai pris le temps de tester ta proposition. Je te confirme qu'elle fonctionne.
Mais je n'ai pas compris pourquoi il y a Range("b1"), car la cellule b1 est vide.
Merci d'éclairé ma lanterne🙃.

Bonne soirée.
 

Discussions similaires

Statistiques des forums

Discussions
314 499
Messages
2 110 247
Membres
110 711
dernier inscrit
chmessi