XL 2016 Besoin de modification avec un formulaire

GeoffreyAbid

XLDnaute Nouveau
Bonjour voila j'ai un fichier avec un formulaire de modification et 3 feuilles , quand je sélectionne une ligne et que je clique sur modifier mon formulaire ouvre la ligne sélectionné il affiche la ligne mais je ne peux pas la modifier
J'aimerais simplement qu'on puisse modifier la ligne grâce au formulaire mais j'ai aussi un autre besoin
Il y a une colonne nommé statut cette colonne est dans chaque tableau de chaque feuille et contient le nom de la feuille dans les cellules , j'aimerais donc que lorsque je modifie par le formulaire le statut un module copie la ligne du statut modifier et la colle dans la bonne feuille
Pour être plus clair je vous donne un exemple , si je suis dans la feuille prêt le statut est égale a prêt mais si je le modifie en Doté alors la ligne modifié doit être copié et collé dans la feuille Doté
Si possible la ligne doit être supprimé
Merci d'avance et n'hésitez pas a me poser des questions si je n'ai pas été assez clair
(Le fichier est partagé en lien google drive)Fichier Excel
 

Dranreb

XLDnaute Barbatruc
Si le début est pareil ça ne gène pas. Sinon il faut transférer les postes requis de TVL dans un second tableau, local celui-là, déclaré TVLHisto() par exemple et verser celui ci. Verser un tableau dans une plage de plusieurs cellules ne prend guère plus de temps que de verser une valeur dans une seule cellule. Mais le faire individuellement pour chacune multiplie ce temps par leur nombre. Quant aux transferts entre postes de tableaux VBA ils sont incommensurablement plus rapides que tout ça.
 
Dernière édition:

GeoffreyAbid

XLDnaute Nouveau
J'ai une autre demande je souhaite seulement pour le Ref_PC qu'il soit impossible d'avoir un doublon j'ai essayé ce code qui fonctionne mais je n'arrive pas a l'adapté pour qu'il parcours plus d'un seul tableau

Private Sub Ref_PC_Exit(ByVal Cancel As MSForms.ReturnBoolean)

ActiveSheet.Range("A3").Select
Do Until ActiveCell = UCase(Me.Ref_PC) Or ActiveCell = ""
ActiveCell.Offset(1, 0).Select
Loop
If ActiveCell = UCase(Me.Ref_PC.Value) Then
MsgBox "Le code client existe déjà dans le tableau."
Me.Ref_PC = ""
Me.Ref_PC.SetFocus
Exit Sub
End If
 

Dranreb

XLDnaute Barbatruc
Moi j'avais dit
Notez que s'il n'est guère destiné à évoluer (comme pouvant traiter plusieurs lignes, à rechercher dans l'UserForm par exemple, mais avec 3 tableaux c'est compliqué) on peut quand même faire un peu plus simple
Je regrette d'avoir proposé ce qui suivait parce que ça n'arrête pas d'évoluer dans le sens que j'estimai optimal : un UserForm de consultation et mise à jour avec une ou plusieurs ComboBox pour la saisie des éléments d'identification dont la combinaison doit être unique dans la base, et des contrôles associés pour le reste.
Ça implique de très nombreux modules de services mais une programmation hyper simple dans l'UserForm, s'auto ajustant aux ajouts et suppressions de colonnes, sauf à raison d'une seule instruction à ajouter ou supprimer dans la Sub UserForm_Initialize pour chaque colonne concernée.
Vous n'en voulez pas, on en reste là, c'est tout. Mais si je devais retravailler dessus j'aimerais bien que vous renommiez tous vos contrôle avec un trigramme identifiant le type d'objet, pris de cette liste, suivi d'une partie mnémonique commençant toujours par une majuscule :
1640005181380.png
 

Discussions similaires