XL 2010 Problème recherche & modification

guiguisbc

XLDnaute Junior
Bonjour à tous voici mon fichier avec lequel je galère un peu :
quand je suis sur l'userform lancé via le bouton "SAISIE", et que j'appuis sur la loupe en haut à gauche (je ne sais pas du coup si vous aurez l'image dans le fichier...) (voir code VBA loupe) j'active le mode recherche.

J'arrive à remplir via un numéro d'intervention mes textboxs de mon userform. mais j'aimerai pouvoir modifier les valeurs et les réécrire au même endroit ou je l'ai trouvé ( pouvoir modifier en gros) et le re-archiver au même endroit sans doublon.

Pour info :
Mon userform me sert à saisir une nouvelle intervention (ça pour le moment ça marche)
Rechercher et modifier une intervention déjà archivée. (c'est ça qui ne marche pas)

Merci d'avance ;)
A+
 

Pièces jointes

  • SUIVIE INTERVENTION.xlsm
    68.9 KB · Affichages: 60
  • loupe.jpg
    loupe.jpg
    7.5 KB · Affichages: 53

Dranreb

XLDnaute Barbatruc
Bonjour.
Mettez des ComboBox pour toutes les infos faisant partie d'une combinaison unique dans la base.
Réfléchissez un peu aux procédures à mettre en place pour mettre à jour la ligne dont vous connaitrez le numéro LCou ou la créer s'il est à 0. Je peux vous équiper votre classeur d'objet ComboBoxLiées qui fera le lien entre les deux.
 

Dranreb

XLDnaute Barbatruc
Je veux dire réfléchir spécifiquement par rapport à ce principe d'un petit nombre de variables globales Private, c'est à dire conservées et partagées par toutes les procédures de l'UserForm. LCou As Long, surtout: le numéro dans la base de la ligne en cours de modification, VLgn() As Variant: les valeurs de la ligne en cours de modification ou de création, TLgn() As Long: une table de numéros de lignes éventuellement, si plusieurs doivent pouvoir être réaccédés (cas d'une ListBox par exemple)
Donc raisonner selon une indépendance totale des différentes procédures les une par rapport aux autres, qui ne s'appuieront toutes, de leurs façon particulières qui leur est propre, que sur ces quelques variables spécifiques là. Et quand même un truc connu partout aussi qui s'appelera CL.PlgTablo et sera un objet Range représentant la plage de cellules couvrant les lignes entières de la totalité de la base. Et donc du coup bien évidemment CL.PlgTablo.Rows(LCou) la plage représentant la ligne en cours de modification, etc. C'est toute une gymnastique basé sur un principes conceptuel de départ, faut y adhérer tête baissée en toute confiance. J'ai réalisé beaucoup d'UserForm de mise à jour tous basés sur ce principe, dans des classeurs nommés CBxLiéesPseudoDuDemandeur.xlsm joints dans de nombreuses discussions.
 

SBDog

XLDnaute Nouveau
Je cherche une personne qui pourrait m'aider (je ne sais pas si je suis sur la bonne page nouveau sur le site ...)
je suis novice en VBA & particulièrement avec les userform,j'ai fais un tableau avec les info que j'ai pu glaner a droite et a gauche pour m'améliorer mais je but sur un PB :
je voudrais pouvoir modifier valeur d'un tableau via un userform avec un bouton recherche (celui la = OK) & pouvoir modifier certaine valeur via un bouton modifier et la je n'y arrive pas
merci a la & aux personnes qui pourront m'aider
(ci joint mon ficher)
 

Pièces jointes

  • Tableau des stock.xlsm
    715.4 KB · Affichages: 62

Dranreb

XLDnaute Barbatruc
Bonjour.
Dans CommandButtonMODIFIER_Click, Lig ce n'est plus ComboBoxRecherche.ListIndex + 3 comme no_ligne dans CommandButtonRECHERCHE_Click ?
D'ailleurs personnellement je prendrais le même nom partout, LCou, mais en variable globale Private.
J'aurais des outils intéressants à vous proposer si toutes les listes des ComboBox étaient à tirer du tableau à mettre à jour lui même et non de tables externes.
 

SBDog

XLDnaute Nouveau
Merci pour la réponse,
Mais la toute suite je n'ai pas tout compris ,c'est mon 1er userform
je l'ai fais avec les infos prise a droite & a gauche ,je compte bien m'améliorer mais dans l'immédiat !!!
avec un exemple peut être voir une solution sur mon fichier
je pourrais la décortiquer afin de comprendre
si il faut modifier mon tableau pas de Pb je le ferais
Merci
 

Dranreb

XLDnaute Barbatruc
En l'état, dans CommandButtonMODIFIER_Click vous utilisez une variable locale Lig que vous n'initialisez pas.
Donc ma toute première réaction c'est de vous dire de l'initialiser: Lig = ComboBoxRecherche.ListIndex + 3
Mais vous n'auriez pas besoin de le faire si c'était une variable globale Private nommée LCou, déja initialisée dans la CommandButtonRECHERCHE_Click à la place de no_ligne
(Une variable globale est une variable déclarée tout au début d'un module, avant toute procédure, par le mot clé Private ou Public, de préférence derrière une instruction Option Explicit pour faciliter la mise au point)
(Vous auriez dû ouvrir une nouvelle discussion pour ça, mais ça ne me dérange pas que vous en squattiez une laissée à l'abandon par le demandeur initial)
 
Dernière édition:

SBDog

XLDnaute Nouveau
J'ai essayé les modifications que vous m'avez proposé sans résultat ou bien je n'ai pas compris.
Sans vouloir abuser si vous pouviez m’écrire les lignes de code dans le fichier que j'ai joint afin que celui ci fonctionne
Je l’étudierais afin de comprendre ( et de ne pas mourir idiot "humour")
Merci c'est sympa de vouloir m'aider même si j'en abuse :oops:
 

SBDog

XLDnaute Nouveau
J'ai a nouveau fais un essai & cela fonctionne , MERCI
mais j'ai encore besoin de vous,savez vous si il est possible de mettre une date dans la combox de façon automatique ?
il y a t'il une façon de suprimer une ligne complete via le userform ?
 

Dranreb

XLDnaute Barbatruc
Bonjour.
D'une façon générale on ne peut mettre que des textes dans les valeurs de contrôles affichant des caractères, et pour la bonne forme il conviendrait de les convertir en les données d'autres types souhaités pour des cellules au moyen des fonctions CDate, CDbl ou CCur
Oui, qu'est ce qui vous fait douter qu'on puisse utiliser la méthode Delete d'un range dans un UserForm ?
 

SBDog

XLDnaute Nouveau
Oup's
désolé je suis d’astreinte & j'ai dus m'absenter
Non je ne doute pas je suis novice
mais mon fichier va être utilisé par plusieurs personnes ,la 1er pour enregistrer les valeurs ,la 2eme pour les reprendre (d'ou le bouton "modifier / stocker" & une fois éliminées ou réutilisées les matieres du faite de la mise en forme du tableau je voudrais un bouton qui me permettrait de sélectionner un ligne (directement à gauche Ex: "ligne 1,2,3 etc ...) & la supprimer
ma macro "enregistrer" allant chercher la dernière ligne vide le but étant de ne pas me retrouver avec des ligne vide
mes collègues voulant surtout un fichier pratique,rapide et sans prise de tète qui permettrais un recyclage et non pas du déchet. (... je ne sais pas si je suis bien clair ...)
Sur ce point je ne sais pas faire

PS: MERCI pour le "LCou" cela fonctionne très bien
 

Discussions similaires

Statistiques des forums

Discussions
312 305
Messages
2 087 081
Membres
103 457
dernier inscrit
fab2614