quel est le code dans une macro pour rechercher des données

  • Initiateur de la discussion Jocelyn
  • Date de début
J

Jocelyn

Guest
Bonjour a tout le forum,

pour commencer je vous précise que je suis débutant, et c'est pourquoi je me tourne vers les spécialistes que vous etes.

Mon problème est le suivant j'ais créé un fichier devis dans lequel j'avais créé un onglet (feuil1)pour sauvegarder les données les plus importantes du devis,
pour ce faire j'avais mis en place un semblant de macro (merci à Didier_mDF pour m'avoir aidé a la rendre reellement fonctionnelle), elle fonctionne vraiment trés bien maintenant.

Par contre vu que mon devis comporte une partie de réalisé qui va etre ammenée a changer régulièrement j'aimerais pouvoir créer une macro qui irait chercher par raport au numéro de devis l'ensemble des éléments sauvegardés le concernant et qu'il les restituent dans la feuille devis afin de mettre à jour les éléments réalisés.

la deuxieme question est'il possible que lorsque les modifications seront effectuées dans la partie du réalisé la macro aille re sauvegarder les informations sur la ligne d'ou elle les a extraites en effaçant les anciennnes de façon a ne pas avoir plusieurs lignes pour un meme devis.

Je ne suis pas sur que mon discour ai été très clair je joint donc un fichier d'exemple.

je vous adresse a tous un grand merci d'avance
 

Pièces jointes

  • devis.zip
    14.8 KB · Affichages: 79
  • devis.zip
    14.8 KB · Affichages: 78
  • devis.zip
    14.8 KB · Affichages: 80
@

@+Thierry

Guest
Salut Jocelyn, le Forum

Vite fait pendant ma pose déjeuner, je passe par une macro évènementielle quand tu saisis un numéro de devis existant... Quoique moi je verrais tout ceci en UserForm...

Bon Après Midi
@+Thierry
 

Pièces jointes

  • devis-V01.zip
    17.8 KB · Affichages: 91
J

Jocelyn

Guest
salut @+thierry,

Un grand un très grand merci a toi c'est ce que je voulais réaliser.

En ce qui concerne le UserForm pour avoir navigué un peu sur le site je pense effectivement que ce serait une meilleure solution,
seulement voila je devais préparer ce fichier trés rapidement et je suis tellement novice en VBA que je ne sais pas par quel bout prendre la création d'un Userforme, et pourtant j'avais essayé sans arrivé a rien.

Maintenant je suis pret a apprendre et si il te venais l'envie par le biais de ce post de me délivrer une petite formation basée sur le devis par exemple (pour que je puisse m'y retrouve) je suis preneur.

De toute façon un grand merci et pour la réalisation et pour les explications concernant les lignes de code cela m'aide a me former, et me donne l'espoir sans devenir aussi fort que vous de pouvoir donner un coup de main a des plus novices que moi.

Merci encore
bonne après midi
Bonne semaine

A+
Jocelyn
 
@

@+Thierry

Guest
Hello Jocelyn, le Forum

Ultra Rapidos et probablement plein de Bugs.... mais pour un avant goût en UserForm...

Je dois partir là, à bientôt !

@+Thierry
 

Pièces jointes

  • USF_Gestion_Devis-V01.00.zip
    31.6 KB · Affichages: 75
J

Jocelyn

Guest
Salut le Forum,
Salut @+Thierry,

je viens de voir que tu avais travailler sur un UserForm,
je suis en réunion toute la matinée, mais avant meme de savoir ce que cela donne je te dit un grand merci, je regarde a ca de plus près en début d'aprés midi et je te dit ce qu'il en est.

Mais de toute facon un grand tres grand merci

toi et le forun vous etes géniaux

bonne matinée,
A+
Jocelyn
 
J

Jocelyn

Guest
Re le forum,
Re @+Thierry,

Comme je l'avais dit ce matin, j'ai regardé de façon plus appronfondie ce que donne ton UserForm et contrairement a ce que tu as annoncé je n'ai pas vu de bugs.

Juste 2 petites erreurs relevant de ma responsabilité.

Grace a tes expliquations je suis pour l'instant parvenu a comprendre la plus part des lignes de codes (la plus part seulement).

1) Par contre je me suis rendu compte que dans DataHisto il me manquait un champ "le coefficient d'incertitude" lorsque je remonte un devis existant si le coefficient d'incertitude ne remonte pas automatiquement les totaux ne sont plus bon puisque pas multipliés par le coeff je n'ais donc plus le meme devis. Et c'est la que je dis que je n'ai pas encore décrypté tous les codes car si je pense que pour remonter cette info il faut rajouter dans la partie "scanning du tableau " une ligne du type ".ScrollBar1.value = Devis(i, la colonne corespondant a la sauvegarde) (dis moi si j'ais bien analysé) par contre je n'ai pas compris quelle est la ligne de code qui permet de sauvegarder l'info dans DataHisto merci te m'éclairer j'ais un grand besoin de cette rectification.

2) Je voudrait aussi savoir si il est possible lorsque l'on remonte un devis de faire en sorte qu'il soit impossible aux usagers de changer les éléments relevant purement de la partie devis et cela incluant le fait que lors de l'enregistrement des modification meme la date de création ne change pas.

Je te remercie encore pour l'aide que tu m'apporte tant au niveau du projet en lui même que tu fait que tu m'aide a me former en code VBA.

bonne fin de journée,
Merci encore,
a+
Jocelyn
 
@

@+Thierry

Guest
Bonsoir Jocelyn, le Forum

Bon alors là c'est encore plus rapide et j'ai vraiment survolé le coup... Je Pense que çà passe, mais vraiment j'ai pas mis plus de 5 minutes chronos car je suis vraiment à le bourre en ce moment...

Pour le Coef c'est bon (enfin ce que j'ai compris...)

Pour la Date je n'ai pas eu le temps de fignoler mais il y a du progrès...

Pour la ScrollBar çà passe juste mais c'est tiré par les cheveux !! lol

Pour la Date (à nouveau niveau Non Changement) çà à l'ai OK sans test... (la Feuille Devis n'est pas faite encore... Faut nommer la Cellule B4 "TextBox12"... et voir...

Pour les les éléments relevant purement de la partie devis à bloquer dans le cas de Modif... à préciser...


Bon je file là !

Bonne Soirée, Journée, Semaine, Mois de Juillet, été !!!
@+Thierry
 

Pièces jointes

  • USF_Gestion_Devis-V01.01.zip
    33.6 KB · Affichages: 67
J

Jocelyn

Guest
bonjour le forum,
bonjour @+Thierry,

J'ai vu que tu avais encore travaillé pour moi donc merci c'est vraiment génial.

J'ai repéré un petit problème dans les lignes de code, mais avant de le "bricoler" je voudrais ton avis.

J'ais remarqué que lors de la sauvegarde d'un devis, il sauvegarde 2 fois le nombre de jours estimés taux A. Alors en essayant d'analyser les lignes de codes je me suis dit qu'il suffisait peut etre de modifier "a partir de la procédure commune" la ligne : .Range("G"& L ) = Val(Me.TextBox1) en : .Range("G"& L ) = Val(Me.TextBox7) qui correspond (je crois) au nombre de jours réel taux A
Je me demande aussi si la ligne : .Range("F"& L ) = Val(Me.TextBox7) n'est pas un doublon puisque F est déja renseigne par la ligne : .Range("F"& L ) = Val(Me.TextBox1) donc au final si .Range("F"& L ) = Val(Me.TextBox7) n'est pas a suprimer
Dans l'onglet "DataHisto" la colonne "J" ne se renseigne pas lors de l'enregistrement d'un nouveau devis par contre les colonnes "K", "L", "M" oui donc pour eviter d'avoir une colonne vierge, toujours dans "a partir de la procédure commune" il suffit pe etre sur les trois dernières lignes de remplacer:

.Range("k" & L) par .Range("J" & L)
.Range("L" & L) par .Range("k" & L)
.Range("M" & L) par .Range("L" & L)

Est ce que j'ais bien compris et est que je vais devenir un bon éléve (lol)

Je continu à analyser tout ça, a voir si je peux renommer la cellule B4 en TextBox12 c'est pas sur j'ais pas encore essayé.

en ce qui concerne les éléments a bloquer lorsque l'on recharge un devis c'est simplement de ce dire si j'ais besoin du devis c'est pour compléter la partie jours réalisés Taux A et Taux B.

cette démarche commence juste dans notre structure et la direction voudrait éviter que les salariés ne modifient les éléments estimés lors de la création du devis (pour qu'ils puissent les affiner en ayant des écarts réels), soit: la date, le numéro de devis, le commanditaire, le responsable, le nombre de jours estimés TauxA, le nombre de jours estimés Tauxb ainsi que le coeff d'incertitude. Donc il faut bien que ces info remontent quand on demande un devis déja existant mais il faudrait a ce moment la que ces données nepuissent pas etre changées.

J'espere avoir été plus clair cette fois.

Dis moi si je peux sans créer de problème a ton programme effectuer les modifications dont j'ais parlé au début de mon laïus.(et oui je suis un grand bavard)


Je te tiens au courant pour tout le reste,
Bonne journée,
Encore merci,
A+
Jocelyn.
 
J

Jocelyn

Guest
Re bonjour le forum,
Re Bonjour @+Thierry,

En poursuivant les analyses et les essais je me suis apperçu que j'avais un soucis avec le numéro de devis :

j'essai de t'expliquer,

a force de faire des essais je suis arrivé au numéro de devis 9 jusque la pas de problèmes.
Par contre quand j'ai voulu créer le numéro 10 le programme a pensé que je voulais re monter le 1 .

de la ma première réaction a été de me dire de toute façon c'est pas grave car la vraie numérotation sera "année - numérotation normale" soit pour le premier devis 2004-00001, le deuxième 2004-00002, etc..........

J'ai donc créé un devis avec cette numérotaion et la surprise aprés la sauvegarde du devis, l'onglet devis porte bien 2004-00001 par contre la cellule contenant le numéro de devis dans l'onglet "DataHisto" lui ne contient que 2004 le reste du numéro a disparu, j'ai vérifié si cela venait du format cellule mais non donc je suis une nouvelle fois perdu (a chaque fois que j'avance dans les minutes qui suivent j'ais l'impression de faire 2 pas en arrière pour 1 en avant).

en te décrivant ce probléme je suis entrain de me demandé si la première partie du soucis ne va pas ce représenté aussi des lors que sur la bonne numérotation j'aurais inscrit la partie 2004.

merci d'avance de m'éclairé,
voila l'exemple parfait d'un fichier que je pensait facile a réaliser et qui prend une ampleur que je ne soupçonnais pas.

Merci encore pour ton aide.

Jocelyn
 
@

@+Thierry

Guest
Bonsoir Jocelyn, le Forum

Toujours autant à la bourre, mais quand j'ai une pose je jette un oeil à ce fichier...

Pas trop le temps de t'expliquer, voici une Version 2.0

J'ai constaté l'erreur de report de Range, tu as raison (je fais çà vraiment à l'arrache !! lol) Pour le 2004-00001 reporté 2004 only tu verras auss, c'était simple)

J'ai tout renommé les Contrôles c'est plus clair !!)

J'ai mis un ToggleButton Encore expérimental pour une macro "Locker" ...

Voilà je file, j'ai essayé de mettre des explications ... mais pas trop de temps

Bonne Soirée
@+Thierry
 

Pièces jointes

  • USF_Gestion_Devis-V02.00.zip
    40.2 KB · Affichages: 75
J

Jocelyn

Guest
Bonjour le Forum,
Bonjour @+Thierry,

En parcourant les fils j'ai vu que c'etait ta fête alors BONNE FÊTE Thierry.

Merci de continué a faire évoluer ce USF

J'aime beaucoup l'amélioration avec le "ToggleButton1" en plus ca fonctionne super bien. Le fait d'avoir pensé au control (pouvant venir d'une erreur de frappe) sur le numéro de devis existant ou non est génial, si oui je n'écrase pas les donnée du devis précédent (c'est vraiment très prudent)

Je regarde tout ca depuis le début d'aprés midi il reste une petite chose qui n'est pas tout a fait réglée c'est la suivante j'ai créé un devis la date du jour "Now" donne le "01 juillet 2004" dans "DataHisto" par contre si je remonte le devis aprés sa création la date affichée dans l'onlet "devis" case "TxbDate" est "7 janvier 2004"il inverse le jour et le mois et je vois pa pourquoi.

j'ais après deux petites questions concernant une éventuelle amélioration les voila dans un ordre disons "prioritaire.

1) lorsque l'on est en visualisation/modification de Devis et que l'on remonte un devis on voit apparaitre la date dans "TxbDate" du formulaire
est il possible d'obtenir ca quand on est en mode Création sans avoir à le taper.

2) Concernant la marche a suivre pour un numéro de devis deja attribué apres avoir cliqué sur le oui de la (MsgBox "Attention le devis numéro " & .CbxDevis.Value & " existe déjà dans la base") est il possible que l'on tombe sur la meme séquence qu'aprés :(MsgBox "Des Champs Obligatoire Sont Vides", vbCritical, T), tout s'efface et on recommence. Si ce n'ais pas possible le fait qu'il recrée une ligne sera suffisant.

J'ai juste réussi a rajouté une boite de message indiquant "veuillez changer le numéro de devis" mais je ne suis pas parvenu a empecher l'enregistrement et a remetre leschamps a Zéro. il y a encore du boulot d'apprentissage pour moi.

Malgrés ton manque de temps tu m'en consacre et contrairement a ce que tu annonce tu met meme des explications (lol). c'est comme "L'erreur "de Range que tu dis etre une "erreur" n'etait en fait d'un test que j'ai passé avec brio (lol!!!!!!!!!!!!!!!!!!!!!)

toutes blagues misent a part, je te remercie encore
Bonne fin de journée
Bonne soirée
A+
Jocelyn
 
@

@+Thierry

Guest
Bonjour Jocelyn, le Forum

Désolé mais hier c'était ma fête et je me suis retrouvé avec quelques copains et pas eu le temps de faire une réponse.

Enfin qu'à celà ne tienne nous somme déjà en Version 3.0 car pour ton problème de date j'ai carrément ajouté un Control Calendar 9.0 qui devrait passer sur toutes les Versions d'Excel... (Enfin je crois que ce "bon vieux machin" d'Excel 97 arrivait à le digérer)...

Ce qui est interressant dans la façon d'utiliser ce calendar, c'est de le masquer et de l'afficher que lorsque l'on entre dans la TextBox de Date... (J'ai mis aussi un Label Interactif pour le Fun)

Pour le point 1) c'est réglé donc pour la date, et même mieux que çà !!

Pour le Point 2) c'est réglé aussi avec l'utilisation d'une Boolean "Stopping" qui va être Vraie ou Fausse et laissera ou non continuer le Programme.

Pour le Format de Date US (mm/jj/aa), oui c'est toujours embêtant avec VBA qui est nativement américain et qui adore tout transformer en Format US... Je me fais souvent avoir sur ce Forum pour les PC en version FR car je travaille en Version Américaine de Windows et Excel et pour moi c'est normal... Je pense que ce devrait être maintenant arrangé avec la Variable Date "TheDate"...

Voilà petit à petit ton UserForm prend Forme !!!

Bon Appétit
@+Thierry
 
@

@+Thierry

Guest
Oups !!

Si je mets la Version 03.00 en ligne c'est mieux !!! mais Zut pas fais gaffe à la Taille, çà ne passe pas ... (55 ko)

Hummm pas accès à mon serveur FTP avant ce soir là...
Si tu veux je te l'envoie par Mail, mais je le mettrai en ligne ce soir (ou demain de toute manière)

Re Bon App
@+Thierry
 
J

Jocelyn

Guest
Bonjour le Forum,
Bonjour @+Thierry,

Juste un petit message pour te dire que je suis parvenu a résoudre le problème N° 2 du message précédent voila le code que tu avais créé :

Private Sub CheckingDevis()
Dim i As Integer
With Me
For i = 1 To UBound(Devis)
If UCase(CStr(.CbxDevis.Value)) = UCase(CStr(Devis(i, 2))) Then
MsgBox "Attention le devis numéro " & .CbxDevis.Value & " existe déjà dans la base"
End If
Next i
End With
End Sub

Je l'ai transformé comme ça :

Private Sub CheckingDevis()
Dim i As Integer
With Me
For i = 1 To UBound(Devis)
If UCase(CStr(.CbxDevis.Value)) = UCase(CStr(Devis(i, 2))) Then
MsgBox "Attention le devis numéro " & .CbxDevis.Value & " existe déjà dans la base"
End If
If UCase(CStr(.CbxDevis.Value)) = UCase(CStr(Devis(i, 2))) Then
CbxDevis.Value = ""
End If
Next i
End With
End Sub

Je progresse, je progresse mais à cette vitesse la je serais grabataire avant d'avoir atteint le quart de ton nivo, il ne m'a falut que 3 a 4 heures pour arriver a ce résultat :eek:) lol

Mais ce n'ai pas ca qui va m'arreter !!!!!!!!!!

Par contre je n'ai pas la moindre idée pour résoudre le probleme d'affichage du format date dans l'onglet "devis" ni pour résoudre le cas 1
1) lorsque l'on est en visualisation/modification de Devis et que l'on remonte un devis on voit apparaitre la date dans "TxbDate" du formulaire
est il possible d'obtenir ca quand on est en mode Création sans avoir à le taper.

Merci encore pour ton aide
bonne journée ,
Bon week-end,
A+
Jocelyn
 
J

Jocelyn

Guest
Re @+Thierry,

je viens juste de te laisser un message sans voir que tu m'avais répondu donc mon bricolage ne sert plus a rien, son seul intérêt aura été de me creuser la cervelle, ce qui n'est deja pas si mal en soit. (lol!!!!!!!!!!!!!!!!!!)

c'est très formateur de passer d'un bricolage a un vrai code. et la je suis sérieux.

Pour ce qui de m'envoyer le programme directement par mail je n'y voit aucun problème, surtout si tu le met en ligne quand meme, on ne sait jamais il pourra peut etre aide quelqu'un d'autre c'est le but de ce forum.

Voila bon appétit a toi aussi
encore merci
A+
Jocelyn
 

Discussions similaires

Statistiques des forums

Discussions
312 211
Messages
2 086 294
Membres
103 171
dernier inscrit
clemm