![]() |
|
Forum
|
|
|
#16 (permalink) |
|
Guest
Messages: n/a
|
Salut Jocelyn, le Forum
Le Fichier vient de partir dans ton mail, je le mettrai en ligne plus tard. Sinon là j'ai du taff, je pense que ton astuce est correcte et pas tant bricolo que çà... Vider la CbxDevis est très astucieux puisque la boucle suivante stoppera la procédure si elle est vide... Par contre pour ton info, tu pourrais faire directement ceci : 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" CbxDevis.Value = "" End If Next i End With End Sub (pas besoin d'un second If pour la même condition) Bravo pour ta persévérance et bon courage @+Thierry |
| ANNONCES | |||
|
|
|
|
#17 (permalink) |
|
Guest
Messages: n/a
|
Re bonjour @+thierry,
J'ai bien reçu ton mail, je ne t'ai pas répondu plus tot je sort juste de réunion, et comme j'y retourne je voulais te dire j'ai bien reçu ton mail. Je re garde a toutes les évolutions dont tu parle dans le week-end et je te tiens au courrant des lundi. Comme j'ai deja eus un apperçu de tes capacités je ne suis pas inquiet. Une fois encore merci Bonne fin de journée, Bonne soirée, Bon week-end, A+ Jocelyn |
|
|
#18 (permalink) |
|
Guest
Messages: n/a
|
Bonjour Jocelyn, le Forum Comme promis, la dernière version de ce fichier... USF_Gestion_Devis-V03.00.zip Bon Week End @+Thierry |
|
|
#19 (permalink) |
|
Guest
Messages: n/a
|
Bonjour le Forum,
Bonjour @+Thierry, D'abord j'espere que tu as passé un bon week-end, toi et tous ceux du Forum. La version 3 du fichier fonctionne a merveille j'aurais quand meme bien aimé savoir comment tu as fait pour integrer le calendrier au niveau du UserForm, car si j'ai reperé les différentes lignes de code pour le calendar, je ne sais pas comment on peux integrer le calendrier en lui meme dans le UserForm, je suppose que c'est comme pour les autres boutons mais la je vois pas lequel (remarque c'est peut etre tout simplement les lignes de codes mais je trouve pas ca cohérent). Sans vouloir abuser j'ai essayer d'integrer un bouton "impression", j'ai créé le bouton et je l'ai re lié à : Private Sub CommandButton4_Click() With UserForm1 .PrintForm End With End Sub Maintenant le UserForm s'imprime il me reste un petit problème, c'est au nivo de la mise en page de l'impression, Jaimerais le centré horizontalement et rajouter un titre (voir peut etre autre chose mais je ne sais pas bien encore) Le titre serait quelque chose du type "DEVIS IAAT" (en ce qui concerne le titre dans les propriété du UserForm j'avais mis "Formulaire de Devis" dans "Caption" mais la petit ligne bleu ou c'est indiqué n'est pas reprise lors de l'impression) Tu vois que je n'avais pas de raison de m'inquieté tu est un vrai spécialiste Merci pour l'info sur les If si j'ai tout compris on pe faire un seul If et mettre plusieurs actions a suivre c'est interressant a savoir (je me forme, je me forme et c'est toujours super d'apprendre merci) Encore merci, Bonne semaine, Bonne journée, A+ Jocelyn |
|
|
#20 (permalink) |
|
Guest
Messages: n/a
|
Re bonjour le forum,
Re Bonjour @+Thierry, Juste pour t'indiquer que j'ai avancé un peu sur l'impression, je n'avais pas besoin d'imprimer les "CommandButton" alors j'ai modifier le code VBA de la façon suivant. Private Sub CommandButton4_Click() With UserForm1 ToggleButton1.Visible = False CommandButton3.Visible = False CommandButton4.Visible = False CommandButton1.Visible = False CommandButton2.Visible = False .PrintForm ToggleButton1.Visible = True CommandButton3.Visible = True CommandButton4.Visible = True CommandButton1.Visible = True CommandButton2.Visible = True End With End Sub Il devait surement y avoir plus simple et plus rapide mais au moins j'arrive au résultat que j'attendais. (Et toujours du bricolage, du bricolage!!!!!!!!!!) (lol) (mais bon c'est mieux que rien) Par contre pour la mise en forme d'impression pour l'instant je n'arrive a rien (mais je persiste) Merci encore Bonne journée Bonne soirée A+ Jocelyn |
|
|
#21 (permalink) |
|
Guest
Messages: n/a
|
Bonjour Jocelyn, le Forum Ah sorry je n'avais pas vu ta nouvelle question. Pour ce coup là, çà va être très simple... Tu n'auras pas de solution simple et fiable pour imprimer directement un UserForm avec "PrintForm"... C'est une possibilité pour avoir une capture de ton UserForm mais il n'a n'y a pas de paramétrage facile pour l'impression. En fait, si tu veux mon avis perso, un UserForm est un Outil Interactif de Saisie ou de Contrôle mais en aucun cas un UserForm ne doit servir pour l'édition d'un rapport imprimé directement. La solution, tu te fabriques un formulaire sur une Feuille Additionnelle (comme j'ai fait pour Nicole dans ce Fil) et tu renvoies les données du UserForm dessus et ce sera cette feuille qui sera imprimée comme tu le veux, avec le design que tu veux et les paramètres d'impression (Centrage, Marges etc) que tu veux.... C'est beaucoup plus simple, fiable et propre que d'imprimer le UserForm lui-même. Pour renvoyer les données, vu qu'Excel ne va pas aimer des duplications de champs nommées en fait tu n'as qu'à faire ton formulaire et mettre des "=TxbDate" , ="CbxDevis", etc etc.... sur ta nouvelle feuille... Même pas besoin de changer la programmation... Bon Appétit @+Thierry |
|
|
#22 (permalink) |
|
Guest
Messages: n/a
|
Bonjour le Forum,
Bonjour @+Thierry, Je viens te prendre connaissance de ta réponse et je fais confiance au spécialiste que tu es, donc j'essai de mettre ca en place, et que ca marche ou non je te donne le résultat. J'espere que ce sera pour te dire tout fonctionne a merveille mais avec un débutant comme je le suis on ne sait jamais. Bonne nouvelle quand meme je n'ai pas de question a te poser aujourdhuis. Je me suis un peu trop avance j'ai toujour la problematique pour le calendar en soit ce n'est pas important mais si un jour je devais rééditer un userform avec l'insertion du calendar je serais bien ennuyé. J'ai vu que dans les références-VBAproject le calendar était coché mais aprés pour l'insérer sur le UserForm c'est une autre histoire. Encore et encore merci, Bonne fin de journée, A+ Jocelyn |
|
|
#23 (permalink) |
|
Guest
Messages: n/a
|
Bonjour Jocelyn, le Forum Sacré Fil celui là !!! 24ème Post et en duo uniquement ! Pour inserrer un Contrôle ActiveX non prévu dans la boite à Outils Contrôles en plus des Standards TextBox, ListBox, ComboBox, CheckBox, ToggleButton, CommandButton, OptionButton, Label, SpinButton, ScrollBar, Frame, Image, MultiPage, TabStrip, RefEdit... Il faut : Quand tu es sur cette Boite à Outil active, tu clicks droit depuis le MultiPage où se trouve les 15 Contrôls par défaut, et tu auras dans le menu contextuel "Contrôles Supplémentaires"... De là il y a beacoup de choix, très peu te seront utile, et d'autres ne fonctionneront pas, bien qu'ils soient affichés... En fait pour t'éviter de faire des bêtises ne t'orientes dans un premier temps que vers ceux dont le nom commence par MicroSoft... Le Calendrier que j'ai utilisé se nomme "Calendar Control 9.0" pour la version 2000 d'Office (ou 10.0 si tu es sous Office XP, ou 11.0 si tu es sous 2003)... Pour te montrer, voici ma barre d'Outils dans VBE : ![]() On peu facilement ajouter des Onglet à cette barre d'outil en cliquant à droit lorsque l'on est en dehors du MultiPage, le menu contextuel proposera diverses option dont Nouvelle Page... Bonne Fin d'Aprèm @+Thierry |
|
|
#24 (permalink) |
|
Guest
Messages: n/a
|
Bonjour le Forum,
Bonjour @+Thierry, Pour commencer j'espere que les points !!!!!!!!!!!!! de ton dernier message etait de plaisir et non d'agacement !!!!!!!!!!!!!!! (lol!!!!!!!!!!!!!!!!!!)et oui je suis d'accord avec toi pour avoir surfé sur le forum il y en a peu qui on autant de post et qui plus est avec seulement 2 personnes. une bonne nouvelle qui me rejouit, je suis parvenu a aider 2 demandeurs rassurre toi je ne vais pas prendre ta place sur le Forum demain (re lol !!!!!!!!!!!!!) pour l'instant l'aide n'a porté que sur des problèmes de formule (mais bon c'est deja mieux que rien). Et oui que veux tu j'ai essayé de me pencher sur des problèmes de VBA et la je dois dire merci a ceux qui ont trouvé une solution. Alors content de ton élève ? ![]() Revenons a notre Fil, Merci ca y est j'ais trouver les controles supplementaire et je m'en tiendrais a tes recommendations qui sont toujours excellentes. Comme exemple j'ai procédé comme tu me l'avait conseil a la mise en page d'un formulaire et oui bravo plus de problème concernant l'impression et la mise en page (le Fil que tu m'a indiquer m'a aussi été trés utile) Histoire d'allonger le Fil !!!!!! Juste un petit détail dans "TxtNumber"prev et réel si je veux mettre un chiffre avec décimal par exemple 1.5 il ne reconnait pas le point du pavet numérique mais seulement la virgule de l'alpha et ca je sais que les utilisateur vont préférer se servir du pavet numérique, donc si c'est réalisable je suis preneur. Encore merci, Bonne journée, A+ Jocelyn |
|
|
#25 (permalink) |
|
Guest
Messages: n/a
|
Bonjour Jocelyn, le Forum Non rassure toi, jamais d'énervement avec moi, il vaut mieux ! Les Trois Points de suspension indiquent simplement que mes indications ouvrent vers des chemins vastes... Pour tes TextBox et le Point du Pavé numérique il faut rajouter un peu de code pour chacune des quatres TextBox comme ceci : Private Sub TxtNumberPrevA_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) If KeyAscii = 44 Or KeyAscii = 46 Then KeyAscii = Asc(Application.International(xlDecimalSeparator)) End If End Sub Private Sub TxtNumberPrevB_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) If KeyAscii = 44 Or KeyAscii = 46 Then KeyAscii = Asc(Application.International(xlDecimalSeparator)) End If End Sub Private Sub TxtNumberReelA_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) If KeyAscii = 44 Or KeyAscii = 46 Then KeyAscii = Asc(Application.International(xlDecimalSeparator)) End If End Sub Private Sub TxtNumberReelB_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) If KeyAscii = 44 Or KeyAscii = 46 Then KeyAscii = Asc(Application.International(xlDecimalSeparator)) End If End Sub Si tu veux voir ceci en démo, je te conseille : Démo Téléchargeable USF_Convert-EUR-FRF-INTL.zip (45k) Fil de Discussion => DEMO UserForm Saisie Numérique Réglant de problème de séparateur de décimale Bonne Journée @+Thierry |
|
|
#26 (permalink) |
|
Guest
Messages: n/a
|
Re bonjour le Forum,
Re bonjour @+Thierry, Merci pour la réponse précédente ca fonctionne. en mettant le fichier en teste je me suis rendu compte qu'il me manquait une Combobox. Cette combobox ne doit pas comporté de menu déroulant,alor dans le userform j'ai créé une Zone texte nommée "Cbxlibelle" pour l'integrée j'ai changé certaine partie des codes : 'A partir de là procédure Commune... (Le L est intialisé en fonction..) With .Range("A" & L) .Value = TheDate .NumberFormat = "d mmmm yyyy" End With .Range("B" & L) = Me.CbxDevis '==> Changement de Val(Me.CbxDevis) pour "2004-000001" .Range("C" & L) = Me.CbxCommanditaire .Range("D" & L) = Me.CbxRespCommande .Range("E" & L) = Val(Me.TxtNumberPrevA) .Range("F" & L) = Val(Me.TxtNumberPrevB) .Range("G" & L) = Val(Me.TxtNumberReelA) .Range("H" & L) = Val(Me.TxtNumberReelB) .Range("I" & L) = TheCoef .Range("J" & L) = CoefIncerti .Range("K" & L) = TxTotalReel .Range("L" & L) = TxEcartTotl .Range("M" & L) = Me.Cbxlibelle (j'ai ajouté cette ligne) ca c'est pour la sauvegarder le libelle du devis ensuite j'ai changer cette ligne: Devis = WsData.Range("A2:I" & WsData.Range("A65536").End(xlUp).Row) 'augmentation !! (de A jusqu'à I) Par Devis = WsData.Range("A2:M" & WsData.Range("A65536").End(xlUp).Row) 'augmentation !! (de A jusqu'à M) jai aussi changé Private Sub TheLocker(MyBoolean As Boolean) Dim CTRL As Variant For Each CTRL In Array("CbxCommanditaire", "CbxRespCommande", "TxtNumberPrevA", _ "TxtTotalPrevA", "TxtNumberPrevB", "TxtTotalPrevB", "TxbGrandTotalPrev") par Private Sub TheLocker(MyBoolean As Boolean) Dim CTRL As Variant For Each CTRL In Array("CbxCommanditaire", "CbxRespCommande", " Cbxlibelle", "TxtNumberPrevA", _ "TxtTotalPrevA", "TxtNumberPrevB", "TxtTotalPrevB", "TxbGrandTotalPrev") pour bloquer l'écriture en modification et pour finir j'ais ajouter une ligne a cette portion de code 'Scanning du Tableau Devis si le numéro exite For i = 1 To UBound(Devis) If UCase(CStr(.CbxDevis.Value)) = UCase(CStr(Devis(i, 2))) Then 'si ou on remplit les CombobBox et TextBox s'y afférant TheDate = Devis(i, 1) '<<<<<<<<< RECUPERATION DATE EN VARIABLE DATE .TxbDate = Format(TheDate, "DD/MM/YYYY") 'Mise en format Date FR (attention c'est du Text) .CbxCommanditaire.Value = Devis(i, 3) .CbxRespCommande.Value = Devis(i, 4) .TxtNumberPrevA.Value = Devis(i, 5) .TxtNumberPrevB.Value = Devis(i, 6) .TxtNumberReelA.Value = Devis(i, 7) .TxtNumberReelB.Value = Devis(i, 8) TheCoef = Devis(i, 9) '<<<<<<<<<<<<<<<<<<<<<AJOUT Coefficient d'incertitude .Cbxlibelle.Value = Devis(i, 13) <<<<<<moi j'ai ajouter cette ligne quand je lance le UserForm il me fait bien les sauvegardes, il renseigne bien mon formulaire et me remonte bien toutes les infos en modification de plus j'arrive bien a ne pas changer le libelle en modif. le seul soucis c'est que si ce champ n'ai pas rempli il ne déclenche pas cette partie de code : For Each CTRL In Controls If CTRL.Tag = "Mandatory" Then If CTRL.Value = "" Then Bad = Bad + 1 End If Next If Bad > 0 Then MsgBox "Des Champs Obligatoire Sont Vides", vbCritical, T Else DevisBuilding 'Appel d'un autre macro peux tu me dire ce que j'ai oublié de corriger Merci d'avance, Bon appétit, A+ Jocelyn PS encore une fois j'en ai coller un kilometre de long dans ce post mais maintenant tu doit avoir l'habitude !!!!!! |
|
|
#27 (permalink) |
|
Guest
Messages: n/a
|
Bonsoir Jocelyn, le Forum J'ai bien eu tes deux messages en BAL, et tu as de la chance de les avoir envoyé à travers USF_XLD_Contacts Manger.... (car mon Outlook détruit tout !!!)Donc pour ta question c'est très simple et c'est un truc de Ti... Fenêtre Propriété de ta TextBox déguisée en Combobox ! lol Dans cette fenêtre tu cherches la proipriété "Tag et Toc" !! !!! lol (nan juste Tag !! lol) Bonne soirée @+Thierry |
|
|
#28 (permalink) |
|
Guest
Messages: n/a
|
Bonjour le Forum,
Bonjour @+Thierry, Je vais pas etre trés inventif mais merci pour ta réponse une fois de plus c'est exactement ce qu'il falait. Et j'espere que de t'avoir appelé directement sur ton mail ne t'a pas trop ennuyé, mais je ne voulais pas recréer un nouveau fil. Une nouvelle fois bravo pour ton User carnet d'adresse et envoi de mail c'est génial et je me suis empressé de le charger a des fins perso et des que j'ai "une minute" (je devrait dire un mois lol!!!!!!!!!!!!!!!!!!!!!!)je vais me pencher sur les lignes de code Maintenant j'ai une explication beaucoup plus détaillée de : If CTRL.Tag = "Mandatory" Aussi bien pour CTRL.Tag que pour le "Mandatory" Eh bien encore merci, Bonne soirée, A+ Jocelyn |
|
|
#29 (permalink) |
|
Guest
Messages: n/a
|
Bonjour le forum,
Bonjour thierry, Je me suis appercu d'un petit soucis dans le fichier, je te donne l'explication et aprés la solution que j'ai touvée, j'aimerais juste que tu me dise si c'est cohérent ca fonctionne mais si tu le veux bien j'aimerais avoir ton avis. le problème est le suivant depuis le rajout du point surle pavet numérique si le chiffre entré est par exemple 1.5 la sauvegarde effectuée dans "DataHisto" est 1 pour ces 4 éléments .Range("E" & L) = Val(Me.TxtNumberPrevA) .Range("F" & L) = Val(Me.TxtNumberPrevB) .Range("G" & L) = Val(Me.TxtNumberReelA) .Range("H" & L) = Val(Me.TxtNumberReelB) alors j'ai procédé a ce changement la .Range("E" & L) = Me.TxtNumberPrevA .Range("F" & L) = Me.TxtNumberPrevB .Range("G" & L) = Me.TxtNumberReelA .Range("H" & L) = Me.TxtNumberReelB j'ai après rencontre un autre problème : les montants sauvegardé ettait en format texte ce qui fait due vu que j'ai construit un TCD a partir de "DataHisto" celui-ci ne voulait pas faire la somme de ces 4 champs J'ai alors songer a rectifier comme ca .Range("E" & L) = Me.TxtNumberPrevA * 1 .Range("F" & L) = Me.TxtNumberPrevB * 1 .Range("G" & L) = Me.TxtNumberReelA * 1 .Range("H" & L) = Me.TxtNumberReelB * 1 la plus de problème pour mon TCD et ma sauvegarde, par contre lorsqu'a la création d'un devis lorsque les "TxtNumberReelA" et "TxtNumberReelB" n'etaient pas renseignés il bloquait sur les lignes .Range("G" & L) = Me.TxtNumberReelA * 1 .Range("H" & L) = Me.TxtNumberReelB * 1 Normal on ne pe pas multiplier un espace vide. Donc pour coriger j'ai changer For Each CTRL In Controls If CTRL.Tag = "Mandatory" Then If CTRL.Value = "" Then Bad = Bad + 1 End If Next par For Each CTRL In Controls If CTRL.Tag = "Mandatory" Then If CTRL.Value = "" Then Bad = Bad + 1 End If Next For Each CTRL In Controls If CTRL.Tag = "un" Then If CTRL.Value = "" Then CTRL.Value = 0 End If Next en prenant soin d'aller ecrire "un" dans la partie "Tag" des propriétés de "TxtNumberReelA" et de "TxtNumberReelB". en faisant ces modifications tout fonctionne bien je voulais simplement ton avis de spécialiste sur mes différents bricolages Encore Merci de toute l'aide que tu m'a apporte bonne soirée A+ Jocelyn |
|
|
#30 (permalink) |
|
Guest
Messages: n/a
|
Bonsoir Jocelyn Inutile de m'envoyer des mails car j'ai eu celui ci (ce long post) directement dans ma BAL puisque je coche systématiquement "Recevoir la réponse par email à l'adresse ci-dessus"... Surtout que tu n'as pas perdu de temps , ce dernier Post 20-07-04 16:37, et ton mail d'appuie 20/07/2004 16:37 !!! (pas perdu une minute !! lol) M'enfin !!! ce genre de truc a le don de m'énerver quand j'ouvre ma BAL le soir (je ne consulte pas mes mails pendant la journée) et que je reçois coup sur coup la même demande... Pour ton problème, oui il est exact quand multipliant les demandes d'élaboration à distance, je n'ai plus vu cette appli tourner depuis un bail et c'est toujours un risque en travaillant par petits bouts sans avoir tous les éléments en main dès le départ, on zap des trucs... Le coup des décimales c'est un truc que Val ne gère pas, il ne faut pas tout remettre en vrac et ton astuce "Me.TxtNumberPrevA * 1" n'est pas bête, mais très mal vue par VBA, c'est certain... Non pas la peine de faire toute une usine à Gaz, tout bêtement ceci devrait te tirer d'affaire (sous réserve d'ommission sur le reste des codes et des interactions possibles !!! je téléphone à mon avocat d'ailleurs !! lol) .Range("E" & L) = CDbl(Me.TxtNumberPrevA) .Range("F" & L) = CDbl(Me.TxtNumberPrevB) .Range("G" & L) = CDbl(Me.TxtNumberReelA) .Range("H" & L) = CDbl(Me.TxtNumberReelB) Bonne soirée @+Thierry |
| ANNONCES | |
| Liens sociaux |
| Outils de la discussion | |
|
|