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

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
Idem sous mon vieux 2007, LookIn:=xlFormulas fonctionne et pas LookIn:=xlValues.
La bonne question est Pourquoi ?
Dans l'aide MS on trouve :
et pour ce paramètres les deux valeurs sont autorisées.
On aurait pu supputer que quand c'est un nombre xlValues est correct, et utiliser xlFormulas si la cellule contient une formule. Non ?
 

fanch55

XLDnaute Barbatruc
J'ai trouvé une explication assez pertinente sur www.mrexcel.com :
 

kyasteph

XLDnaute Occasionnel
Bonjour à tous
je vous remercie pour vos différentes contributions.
En corrigeant le format de la colonne de recherche(colonne B) en format "Nombre sans séparateur de millier", mon code fonctionne.
J'ai fait pareil avec le fichier joint de @cp4, et cela fonctionne (par exemple en mettant 3 210 au format nombre sans séparateur de millier 3210;ça marche).
J'avoue que je n'arrive pas à l'expliquer.
Merci encore pour vos contributions, longue vie au forum.
 

cp4

XLDnaute Barbatruc
Bonjour,
@kyasteph : tu as zappé la solution de Fanch55
VB:
'Il faut faire un find sur xlformulas pour format avec separateur de millers
ligneEnreg = Sheets("JAL_AN").[B:B].Find(ChoixN_Eng, LookIn:=xlFormulas).Row
Tu peux encore améliorer ton code et le rendre un peu plus rapide.
Suggestion pour travailler avec le nom de la feuille active, si j'ai bien compris tu veux utiliser le même formulaire sur plusieurs feuilles
Code:
Option Compare Text
Dim f, ligneEnreg As Integer, Clé(), tblClé(), Feuille As String, dl As Integer, ft As Byte

Private Sub UserForm_Initialize()
Feuille = ActiveSheet.Name

With Sheets(Feuille)
dl = .Cells(Rows.Count, 2).End(xlUp).Row
ft = .Columns(1).Find("Mois", LookIn:=xlValues).Row + 1
Clé = .Range(.Cells(ft + 1, 2), .Cells(dl, 2)).Value
End With
Call Tri(Clé, 1, LBound(Clé, 1), UBound(Clé, 1))
  Me.ChoixN_Eng.List = Clé
End Sub
'***********
Sub Tri(a(), ColTri, gauc, droi) ' Quick sort
  ref = a((gauc + droi) \ 2, ColTri)
  g = gauc: d = droi
  Do
    Do While a(g, ColTri) < ref: g = g + 1: Loop
    Do While ref < a(d, ColTri): d = d - 1: Loop
    If g <= d Then
       For k = LBound(a, 2) To UBound(a, 2)
         temp = a(g, k): a(g, k) = a(d, k): a(d, k) = temp
       Next k
       g = g + 1: d = d - 1
    End If
  Loop While g <= d
  If g < droi Then Call Tri(a, ColTri, g, droi)
  If gauc < d Then Call Tri(a, ColTri, gauc, d)
End Sub
 

kyasteph

XLDnaute Occasionnel
Bonjour
Je viens d'améliorer(pour le transfert), et tester, cela fonctionne sauf quand on fait la recherche intuitive ,en tapant les 1er chiffres dans "ChoixN_Eng", cela génère une erreur; comment y remédier?
Aussi je souhaiterais pouvoir modifier les données se trouvant sur la feuille "Journal" directement .
C'est à dire en modifiant les données sur la feuille active, je souhaiterais aussi (simultanément) modifié les données de la feuille journal ayant le même numéro d'enregistrement(Num Eng 159 dans "Gestion Débiteur" et les données de ligne dont le nunero enregistrement est 159 dans l'onglet "Journal") ; mais je n'y arrive pas.
Merci de m'aider s'il vous plait.
 

Pièces jointes

  • Essai_Modifier1.xlsm
    106.6 KB · Affichages: 3

cp4

XLDnaute Barbatruc
Bonjour Kyasteph,

Fichier en retour, à tester premier point soulever.
Pour la suite, complète la feuille journal de façon qu’elle soit conforme aux données des autres feuilles.
Je crois que tu auras des n° enregistrements en doublons sur la feuille journal, il faudrait ajouter d’autres critères pour cibler la ligne concernée par une modification.

A+
 

Pièces jointes

  • Essai_Modifier2.xlsm
    106.3 KB · Affichages: 8

kyasteph

XLDnaute Occasionnel
Bonjour cp4
Merci pour l'amélioration du code ,je l'ai testé et il n'y a plus d'erreur générée après la saisie dans "ChoixN_Eng" ,cependant la recherche intuitive n'est pas aussi "efficace"; car soit c'est le dernière occurrence de la liste qui est sélectionnée(quand on saisie par exemple le premier chiffre ,exemple 159 dans "Gestion_Débiteur"),ou bien il faut absolument tout saisir(exemple 1678 dans JAL_OD).
Cela dit, ce n'est pas très grave, car en effet pour la modification ,l'utilisateur devra bien retenir le numéro enregistrement à modifier.
En ce qui concerne le point 2(modification simultanée dans l'onglet "Journal"),il n'y aura pas de doublons:
-En effet un numéro enregistrement est unique et ne peut se répéter quelque soit l'onglet
-toutes les "occurrences" se trouvant sur l'onglet "Journal", se retrouvent sur l'usf_Modifier.
je pense qu'à ce niveau, une fois le "numéro enregistrement" trouvé sur l'onglet "Journal", on pourra modifier aisément les données de la ligne concernée.
Mon problème est donc "d'ordonner" à l'usf_Modifier", une fois la modification effectuée sur la feuille active, de choisir l'onglet "Journal "et de retrouver le "numéro enregistrement" sur cet onglet.

Merci de m'aider s'il vous plait.
 

cp4

XLDnaute Barbatruc
Bonsoir Kyasteph,

Ok, j'ai compris quelque soit la feuille considérée, il n'y aura pas de doublon.
J'ai des soucis de secteurs disque dur défectueux. En prévision d'une mort subite de mon disque. J'ai tenté un clonage qui bloque au niveau des secteurs défectueux. Je suis donc en recherche de solution.
Je veux bien t'aider mais hélas, je n'ai pas beaucoup de temps. C'est pour cela que je t'ai demandé de compléter le feuille journal afin de tester le code.

Bonne soirée.
 

cp4

XLDnaute Barbatruc
Re,

@kyasteph : la feuille "journal" ne reflète pas les données des autres feuilles. Sur la base des données existantes et vu que les entêtes sont différentes (pour cela on a utilisé "select case") ainsi que les libellés. Merci de nous montrer la correspondance des colonnes de données entre les différentes feuilles et la feuille "journal".
 

kyasteph

XLDnaute Occasionnel
Bonsoir
J'espère que vous avez pu trouver une solution pour votre disque dur?
J'ai essayé d'adapter le code pour permettre le lancement de l'usf_modifier sur l'onglet "Journal"; ainsi j'ai fait "correspondre" les différentes occurrences de l'usf_modifier et les entêtes de l'onglet "Journal".
J'espère avoir répondu à la question posée.
Merci de m'aider s'il vous plait
 

Pièces jointes

  • Essai_Modifier2.xlsm
    108.7 KB · Affichages: 4

cp4

XLDnaute Barbatruc
Re,
ce n'est pas du tout ça que j'ai demandé. Tu utilises aussi un ou plusieurs fichiers liés à celui-ci. Donc, on ne sait pas vraiment ce que tu fais en amont. Tu risques d'avoir des surprises car il y a des N°Enrg non numériques

Les petits triangles rouges.

En supposant, que tu modifies la lignes N_Enr=157 sur la feuille Gestion_Débiteur, qu'on retrouve sur la feuille journal. Cependant, on se sait pas où mettre les colonnes vides


Ces remarques sont valables pour les autres feuilles, c'est pour cela que je t'ai demandé de compléter les données pour qu'on connaisse la destination de chaque donnée.
 

Discussions similaires

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