Bonjour le forum, autodidacte,
J'avais un peu de temps, alors j'ai commencé à corriger le programme,
Pour continuer, il faudrait que je sache ce qu'est "dte_vo"
Je t'enverrai la nouvelle mouture après vérif
Bon Weed-End à tous
Version imprimable
Bonjour le forum, autodidacte,
J'avais un peu de temps, alors j'ai commencé à corriger le programme,
Pour continuer, il faudrait que je sache ce qu'est "dte_vo"
Je t'enverrai la nouvelle mouture après vérif
Bon Weed-End à tous
Bonjour le forum, Casefayere;
Dte_vo correspondrait à la vente en occasion du véhicule.
Idéalement, si cette condition est remplie alors les entrées/sorties d'une immat seraient supprimés (ou copiés autre part) du tableau.
Je travaille toujours sur une listbox (en cascade?) qui me permettra d'afficher les type en fonction du modèle sélectionné.
Bon week end tout le monde .(merci Casefayere)
(nb : je cherche des exercices vba basiques )
Bonjour Autodidacte, re le forum
Ci-joint un fichier un peu amélioré. Je n'ai encore rien fait en cas où la dte_vo est cochée, on verra ça ensemble si tu le veux, regardes ce fichier et dis-moi ce qui ne va pas
a +
Bonsoir le forum, Casefayere
Ce dernier fichier fonctionne très bien Casefayere. !!
J'ai juste un soucis, je tente de forcer la saisie en majuscule pour certaines textbox (châssis par exemple) une erreur apparait .
Ceci n'est qu'un détail mais je n'arrive pas à comprendre pourquoi.
J'ai ajouté une combobox pour les agents parc.
Je suis toujours sur une listbox en cascade qui me permettrais de sélectionner un type de voiture en fonction du modèle choisi.
Par exemple si l'utilisateur choisit Renault dans la listbox modèle alors seules les voitures renault apparaitront dans une seconde listbox "type"(scenic,megane etc...)
Je cherche également comment m'y prendre pour supprimer les lignes concernées si un véhicule sort en vo.
Mon problème initial étant résolu, veux-tu Casefayere, que je mette résolu au titre de mon topic et que j'en ouvre un autre pour mes autres soucis?
En tous cas, je te remercie d'ores et déjà Casefayere(ainsi qu'à ceux qui s'investissent de la même manière) pour permettre d'approcher le vba par l'exemple.
En ayant du concret j'y vois déjà bien plus clair qu'il y a très peu!!!
Je pourrais peut-être me permettre d'aider d'autres débutants d'ici quelques mois. :yaisse2:
Bonjour Autodidacte, le forum,
Mets :resolu:, je t'aiderais, dès ce soir pour tes autres problèmes
Bonne journée
Voilà j'ai classé le sujet comme résolu.
Dois-je ouvrir un nouveau topic selon toi Casefayere?
J'ai résolu un soucis , quand on choisit une date de sortie et que l'on veut re-saisir des infos de suite les infos du dernier véhicule restaient dans mes textbox .
J ai donc ajouté
Ca redémarre mon formulaire aussitôt mais je sens que ca fait bricolage, qu'en penses-tu?Code:
1
2Unload Me menu.show
Encore merci et bonne journée à tous.
Bonsoir Autodidacte, le forum,
Pas la peine de fermer l'UF, il suffit de mettre ce code après le dernier end if
et pourCode:
1
2
3
4
5 ...End If dte_entree = False: dte_sortie = False: dte_vo = False: modele.ListIndex = -1: immat.ListIndex = -1: _ chassis = "": mouvement = "" End With End Sub
on va y aller dans l'ordre, suivant ce qui t'interesse en prioritéCitation:
J'ai ajouté une combobox pour les agents parc.
Je suis toujours sur une listbox en cascade qui me permettrais de sélectionner un type de voiture en fonction du modèle choisi.
Par exemple si l'utilisateur choisit Renault dans la listbox modèle alors seules les voitures renault apparaitront dans une seconde listbox "type"(scenic,megane etc...)
Je cherche également comment m'y prendre pour supprimer les lignes concernées si un véhicule sort en vo.
dis-moi quoi
a +
Bonsoir Casefayere, le forum;
Je viens de m'apercevoir d'une chose dans le fichier actuel.Ce serait ma """"priorité"""".
Si l'utilisateur renseigne une date d'entrée puis une date de sortie, tout est parfait !!!! La date de sortie se met sur la même ligne .:merci:
Par la suite si le véhicule revient (une entrée donc) une nouvelle ligne se créer .
Impeccable!!!!
Mon soucis arrive juste après, si le véhicule sort une seconde (ou même une 15e fois par ex) autre fois le formulaire modifie l'ancienne date de sortie au lieu de chercher si une entrée plus récente existe.
Je suppose qu'il faudrait ajouter une condition qui vérifie si il n'y a pas d'entrée plus récente ou bien si la date de sortie est déjà remplie chercher si une autre entrée n 'existe pas.
Penses-tu que c'est quelque chose de faisable?
Je vais tenter ta solution pour vider mon formulaire, elle doit être bien meilleure que mon unload me , show menu :aie:
Comme d'habitude merci pour tes conseils.
Tu as appris le vba tout seul? Penses tu que je puisse y arriver avec disons une pas trop mauvaise compréhension des choses et pas mal de temps?
Re, Auto (c'est le cas de le dire:mouarf:)
Je vais donc regarder pour ta priorité, j'avais commencé à travailler sur la marque et le modèle (je vais mettre ça de coté car ça demande un peu de travail car il faut revoir les libellés des box, donc les codes et tes feuilles)
oui j'ai appris tout seul et je suis encore loin, bien loin d'être à la hauteur de ce que me titre mon en-tête (chevronné)Code:Tu as appris le vba tout seul? Penses tu que je puisse y arriver avec disons une pas trop mauvaise compréhension des choses et pas mal de temps?
du temps, ça il en faut
de la compréhension (j'vais faire gonfler mes chevilles) et de la volonté, il en faut aussi mais tu avanceras plus vite que moi, justement gràce à des forums comme celui-là, que j'ai découvert bien tard, j'ai meme fait relache quelques mois après l'avoir connu
je viens de penser à quelque chose, la recherche s'arrete sur la premire aoccurence corespondante qu'elle trouve, il suffirait de provoquer un tri descendant sur la date d'entrée après chaque validation, si tu est d'accord sur l'idée, ça va etre simple,
dis-moi quoi
essayes ce fichier joint
pour le reste je préparerai autre chose
Bonne soirée
re,
bon je viens de travailler un peu.
comme j'ai ajouté une colonne pour le modele, il faudra que tu actualise ta macro nommée "macro1" car je n'ai pas de renseignement
à part ça, je tepropose d'essayer le fichier joint qui tient compte du modele et qui trie en fonction des dates d'entrée dans l'ordre descendant pour etre sur de mettre la date de sortie au bon endroit,
teste ce fichier et dis-moi quoi ,
il y a certainement encore des erreurs ou des aménagements à faire.
sur la feuille 'modele", je te propose, soit d'entrer tous les modeles et marques en ta connaissance ou au fur et à mesure des entrées, tu peux le faire soit en direct soit avec un USF, ou encore compliquer ton code si la marque ou le modele n'est pas trouvé, integrer cette marque ou ce modele automatiquement dans la feuille 'modele
j'espere avoir été clair car je suis fatigué
Bonne nuit
Bonsoir Casefayere;
Je bosse depuis hier sur les aménagements pour voir si tout est ok ! Je reviens vers toi quand je suis à bout de nerfs :)
Pour ma macro1 je peux la supprimer même, je pense qu'elle ne me sert plus.
Le tri fonctionne bien.
Par contre , à première vue, la date de sortie est toujours renseignée sur la même ligne que la première occurrence (immat) trouvée malgré qu'une date de sortie y figure déjà;
N'est-il pas possible, d'affecter une valeur booléenne à ma colonne sortie ?
Par exemple
Si ma cellule sortie = oui (déjà une date de sortie présente sur la ligne de l immat trouvée ) alors on cherche la prochaine occurrence de l'immat vers le haut .
si on trouve la prochaine occurrence et que ma cellule sortie = non alors on renseigne la date sur cette ligne.
Je décortique tout ça pour tenter d'y voir plus clair.
Merci pour tout Casefayere. Bonne soirée (ou bon réveil :P )
Bonjour auto, re le forum,
si tes données sont bien triées par date d'entrée et dans l'ordre descendant (c'est à dire, la date la plus récente vers le haut) la fonction find devrait jouer son role pleinement (j'avais essayé)
maintenant, pour une question de sécurité, si tu préfère ajouter une condition, c'est toujours possible.
ta macro 1, je ne l'ai pas regardé et laissée telle, mais ça m'arrangera si on la supprime car je suivrai mieux l'évolution de ton fichier.
Bonne journée
Bonjour le forum , Casefayere:
[EDIT] Problème résolu [/EDIT]
bonjour a tous
mon idée est de rajouter un combobox alimente par le feuil1
qui reprenne le s données dans les text box en y ajoutant la recuperation de l'index de ligne tu change la date et clique sur retour et valider
ca va donc reecrire sur la meme ligne le ref,le nom la date d'emprunt mais ca onc'est pas grave puisque les données sont les memes et tu rajoute un ligne de code initialisé par l'index trouvé precedament qui ecrive la date de retour
voila pour une piste
je vais essayere de le faire et je t'envoie le fichier
cela dit j'ai deja utilisé ce principe et j'ai posté un fichier dans la discution"un devis facturier fonctionnel"
c'est très recent
Bonjour le forum, Casefayere , patricktoulon :
Actuellement le fichier fonctionne très bien.
Seulement, au bout de plusieurs entrées/sorties sur le même véhicule on dirait que quelque chose ne va plus.
Le programme ne choisit plus la dernière entrée dans le tableau et remplit une date de sortie la ou il en existe déjà une au lieu de trouver la dernière sortie existante.
Dans le fichier joint , pour être plus clair, au lieu de choisir la date du 20 mars pour ajouter la date de sortie en face, il choisit la date entrée du 10 février et écrase la date sortie correspondante alors que ca fonctionne très bien lorsque il n y a que deux entrées /sorties pour la même immat.
Je ne vois pas pourquoi :aie:
Je cherche pour le devis facturier fonctionnel.
Merci à vous !!!!!!!
Bonsoir Auto,
Je viens de voir quelque chose de bizarre dans le module de tri
ton tri doit etre sur la colonne f doncCode:.Sort.SortFields.Add Key:=Range("E2:E3" & Der_ligne)
.sinon ça n'ira pasCode:Sort.SortFields.Add Key:=Range("f2:f" & Der_ligne)
Bonsoir Casefayere,
Merci pour la correction!!
Mais même après modif je n'arrive pas à affecter la date sortie au bon endroit
Je suis désolé d'être aussi mauvais , mais j'ai beau regarder je ne vois pas pourquoi. (ce n est pourtant pas faute d'essayer!!!) .
Pourtant tout se passe très bien , y a vraiment que là que ça ne va pas .
Je suis incapable de trouver la soluce :arf:
Bonsoir,
essayes cette version légèrement modifiée
Bonne nuit
ps :
je viens de changer aussi cette partie
et dans le code valider, pour éviter des erreurs de véhicule, j'ai ajouté une partie de code signalée par "ajout"Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Private Sub modele_Click() Dim str As String, cel As Range With Sheets("base") If marque.ListIndex = -1 Then MsgBox "Choisir d'abord une marque": marque.SetFocus: Exit Sub If dte_sortie = True Then immat.Clear str = modele.Value For Each cel In .Range("b2:b" & .Range("a" & .Rows.Count).End(xlUp).Row) If cel = str Then With immat .AddItem cel(1, 2) End With End If Next cel End If End With immat.SetFocus End Sub
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 If dte_entree = True Or dte_vo = True Then Cells(Der_ligne, 1) = marque Cells(Der_ligne, 2) = modele Cells(Der_ligne, 3) = immat Cells(Der_ligne, 4) = chassis Cells(Der_ligne, 5) = agent_p '********************************************************** If dte_entree = True Then 'ajout, ajout,ajout, ajout,ajout, ajout,ajout, ajout,ajout, ajout Set ch = .Range("C1:C" & Der_ligne - 1).Find(immat) If Not ch Is Nothing And IsEmpty(ch.Offset(0, 4)) Then MsgBox "impossible, ce véhicule n'est pas sorti": Exit Sub 'fin ajout,fin ajout,fin ajout,fin ajout,fin ajout,fin ajout,fin ajout, End If Cells(Der_ligne, 6) = CDate(mouvement): mouvement = "" End If
Bonsoir le forum, Casefayere
Enfin un peu de temps à consacrer à mon projet.
Cette fois ça fonctionne au poil.
Avant d'attaquer la date vo , il me resterais deux questions .
1 Pourquoi mon curseur ne se déplace t-il pas dans l'ordre quand j'appuie sur tab
2 Quand je sélectionne une immat dans la box 'immat' les champs qui se remplissent seuls (chassis et agent parc) correspondent aux renseignements de la ligne d'avant. ?
Je joins mon fichier pour plus de clareté.
Dans l exemple en cas de sortie de l immat 111 , au lieu de retrouver l agent "frte" dans mon formulaire on retrouve celui du dessous RTDE. :aie:
Cette action se faisant en sortie à la sélection de l 'immat je pense que quelque chose coince ici , mais je ne vois vraiment pas quoi
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Private Sub immat_Click() Dim ch As Range, Der_ligne As Integer With Sheets("base") If modele.ListIndex = -1 Then: MsgBox "Chosir d'abord un modele": modele.SetFocus: Exit Sub Der_ligne = Range("A65536").End(xlUp).Row - 1 If dte_sortie = True Then Set ch = .Range("a2:h" & Der_ligne - 1).Columns(3).Find(immat) If Not ch Is Nothing Then chassis = ch.Offset(0, 1): agent_p = ch.Offset(0, 2) End If End If End With chassis.SetFocus End Sub
Merci pour vos éclairages.
Cordialement
Bonjour Autodidacte, le forum,
j'aurais préféré que tu envoies un fichier avec des exemples uniques en terme d'immatriculation, ça aurait été plus facile de controler, je viens de diversifier tes immat et n'ai pas rencontré de problème, pour ton déplacement, il suffit de changer l'ordre des tab dans l'USF, sur ton modèle, j'ai mis à partir de 1 pour date sortie, 2 date entrée, 3 date VO, 4 marque, 5 modèle et ainsi de suite