Traiter une base de donnée avec un formulaire VBA (USF)

Bonjour,

47test2.zip (313.16 Ko)

J’ai besoin de votre pour un problème avec un formulaire et une BDD. J’ai un tableau qui est ma BDD ( 1 ligne = 1 Client ) mon objectif c’est d’ouvrir le formulaire qui affiche les infos d’une ligne du tableau qui seront complétés lors du traitement et une fois clôturé le formulaire affiche la ligne suivante. L’affichage des données dans le formulaire est soumis à une condition, le formulaire doit afficher la les données de la première ligne dont la colonne X est vide ( cette colonne correspond au statut du dossier ).

Dans ce tableau les lignes qui ne sont pas encore traité ont des données uniquement dans les colonnes B, C, D, et E, et une fois le dossier traité on remplit les autres colonnes grâce aux différents champs du formulaire. par contre on peut avoir aussi des lignes ou presque toutes les colonnes sont rempli sauf les colonnes O et X, il s'agit du cas ou le dossier a été traité partiellement et qu'on doit revenir dessus et dans ce cas c'est toutes les données liées aux colonnes déja rempli qui seront affichés dans le formulaire lors de son ouverture.

En conclusion, je cherche comment mettre une condition dans le formulaire pour qu’il m’affiche la première ligne à traiter ( grâce a la colonne X ) et une fois le traitement terminé je valide le formulaire qui va renseigner les colonnes du tableau et affiche les données de la ligne suivante disponible pour le traitement toujours avec la même condition. merci d'avance pour votre aide

Nb : J'avais posté une autre demande liée à une BDD mais c'était une question sur l'utilisation d'une BDD en multi utilisateur, elle n'a rien avoir avec la demande ci dessus car on m'a fait comprendre que le multi utilisateur avec excel ne pouvait pas fonctionner. Cette information est à destination des modérateurs pour leurs expliquer que cette demande ne fait pas doublon avec une précédente ou avec une autre sur un autre site

Bonjour

Alors il y a quelque chose que je ne comprends pas dans votre manière de fonctionner
Hier à 2h du matin vous postez une demande -> https://forum.excel-pratique.com/excel/consulter-une-base-de-donnees-avec-un-formulaire-usf-164269

Vous me répondez à 21h33, puis vous créer ce nouveau fil à 23h52 sur le même sujet ?

Vous m'expliquez là ?

Bonjour à vous deux.

@ Dan

Ce membre avait placé une explication tout au fond de son texte : est-ce celle que tu demandes maintenant ? (voir son NB:)

@ Amine2000

Je te montre dans le fichier ci-joint comment charger ton formulaire avec les données de la première ligne dont la colonne X est vide. Je n'ai pas été plus loin dans ma recherche d'aide car il me semble que tu sais reporter les données inscrites dans le formulaire en retour sur la feuille. Si non, reviens à la charge, mais si possible avec un problème à la fois.

Private Sub UserForm_Initialize()

' Rajout Youille
If VMOD <> 1 Then
    ligne_traitee = Range("X1").End(xlDown).Row + 1
    TextBox1 = Range("A" & ligne_traitee)
    TextBox2 = Range("B" & ligne_traitee)
    TextBox3 = Range("C" & ligne_traitee)
    ' etc.
    ' etc.
End If
' Fin rajout
........................................................

Cordialement.

@Yvouille :

Salut Yves,

oui je viens de voir son explication en dessous mais comme il est venu il y a 10 min, je me questionne sur le fait qu'il vient peut être de la poster en modifiant son fil initial.

Quoi qu'il en soit, j'ai amendé son fichier posté dans le fil initial et posé une question à laquelle il a répondu.
Si tu regardes https://forum.excel-pratique.com/s/goto/1016414, il s'agit de la même chose non ?
Là cela devient un peu ingérable vu que deux fils sont dispos même si BrunoM45 a cloturé le premier

Oui, ça ce complique un peu

J'espère qu'en finale Amine2020 ait sa réponse et qu'il ait compris comment poster mieux une prochaine fois.

A voir selon son retour.

Bonjour Dan, Bonjour Yvouille,

Je suis sincèrement désolé pour cet incident mais cela est vraiment indépendant de ma volonté. Je suis d'accord avec vous vu de l'extérieur cela ressemble plus à un brouillon qu'à une vraie discussion. En fait, juste après avoir répondu à Dan à 21h33 BrunoM45 a clôturé mon post car il a considéré que c'était un doublon. j'ai dû le refaire un autre Post en rajoutant une partie de la réponse que j'avais donné à Dan ( post actuel ). De plus il y'avait 2 sujet différent, le multi utilisateurs que j'ai abandonné car peu fiable sur Excel et le sujet actuel qui est une partie de la solution que j'ai trouvé à mon problème. Par ailleurs, j'admets aussi avoir une part de responsabilité dans cette situation car par méconnaissance de la charte d'utilisation, j'avais posé la question du Multi utilisateur sur un autre site et dès qu'on me la fait remarqué j'ai clôturé 1 des 2. Bref même si c'est indépendant de ma volonté, j'ai comme même une part de responsabilité et je m'en excuse cela ne se reproduira plus. Merci à vous deux pour l'intérêt que vous avez porté à ma demande. Pour revenir à notre sujet, j'ai testé la proposition de Yvouille dans la partie "Initialize" mais je n'arrive pas à l'adapté au code du bouton Valider de façon à ce que une fois la ligne traité le formulaire affiche les données de la ligne suivante ayant toujours la colonne X vide. Est ce que tu l'as essayé ? Cordialement

Bonjour,

Désolé mais ce n'est pas facile de vous lire. Vous écrivez toutes vos phrases l'une derrière l'autre sans ponctuation.

Je vous renvoie votre fichier avec ce que j'avais préparé hier. A vous de voir si cela convient et en attente de vos commentaires

71amine-test2.zip (301.01 Ko)

Cordialement

Edit : vous allez constater que j'ai modifier votre fichier au niveau des codes pour simplifier. J'ai notamment ajouté un code REMPLIR_USF que l'on pourrait utiliser dans le code Valider_click. A faire si le fichier rencontre votre attente

Re bonjour Dan,

Tu as raison la ponctuation est mon plus grand défaut en écriture, je vais essayer de faire attention. En fait, j'ai testé ton fichier et cela répond partiellement à ma demande. il ya 2 points à revoir :

- Dans ton fichier quand je traite le client et que je clique sur valider il y a une nouvelle ligne qui se rajoute en bas du tableau et moi je veux que les modifications s'enregistrent dans la même ligne.

- Une fois que je clique sur Valider, je voudrais que le formulaire reste visible avec les données de la ligne suivante avec la même condition ( Première ligne qui a la colonne X vide ).

Merci de ton aide

Bah les deux points ne sont pas à revoir car je n'avais pas regardé jusque là...

- Dans ton fichier quand je traite le client et que je clique sur valider il y a une nouvelle ligne qui se rajoute en bas du tableau et moi je veux que les modifications s'enregistrent dans la même ligne

Ok mais vous avez une variable VMOD qui intervient dans le processus selon que l'on est en création ou en modifications. Et de ce que je comprends le bouton Valider sert ajouter ou modifier.
Dans le cas présent lorsque vous ouvrez l'userform vous l'ouvrez depuis où ? Le bouton Lancer sur la feuille est juste là pour un test je suppose. En réalité, vous lancez l'userform depuis l'userform Choixmodcre ?

- Une fois que je clique sur Valider, je voudrais que le formulaire reste visible avec les données de la ligne suivante avec la même condition ( Première ligne qui a la colonne X vide ).

A voir plus tard car le point précédent est très important pour la suite

Autre question : vous n'avez pas pensé à utiliser les tableaux structurés dans votre fichier ?

Bonjour Dan, Bonjour Yvouille,

.............Pour revenir à notre sujet, j'ai testé la proposition de Yvouille dans la partie "Initialize" mais je n'arrive pas à l'adapté au code du bouton Valider de façon à ce que une fois la ligne traité le formulaire affiche les données de la ligne suivante ayant toujours la colonne X vide ...........

Je t'avais proposé un début de solution afin de voir dans quelles directions continuer, mais je constate que Dan t'a également apporté son soutien. Ayant bénéficié moi-même entre deux et trois mille fois de son aide - à 100 % avec satisfaction - je suis persuadé que tu es entre de bonnes mains

Bonjour,

Vous avez raison j’ai mis le bouton « lancer » ici uniquement pour le test mais dans le fichier d'origine il ya bien ce bouton pour le lancement manuel en cas de besoin. Pour mieux comprendre mon travail, ci-joint, une copie du fichier d’origine et une description de son utilisation et les raisons du choix certaines variables.

En fait, je reçois un fichier Excel avec un certain nombre de données dont le nom, le numéro et la demande des clients. Ce fichier est mis à disposition pour plusieurs utilisateurs. Chaque utilisateur dispose de son propre fichier avec le formulaire et un tableau ou seront stockées les demandes traitées. Pour le traitement, l’utilisateur récupère le numéro du client à partir du fichier reçu et traite la demande du client. En saisissant toutes les informations demandées dans le formulaire. Une fois le traitement terminé, l’utilisateur valide le formulaire avec le bouton « Valider ». Toutes les informations saisies dans le formulaire alimentent le tableau qui se trouve dans leurs fichiers ( Feuille BD ) et le formulaire est réinitialisé ( Vidé ) et passe au client suivant en prenant un autre numéro. Parfois, l’utilisateur doit revenir sur un dossier pour compléter son traitement initial. C’est pour cette raison que j’ai mis une variable pour différencier la création de la modification. Le formulaire est lancé à partir d’une userform nommée « Départ » et j’ai un autre formulaire pour rechercher et modifier une ligne du tableau. Le formulaire de recherche est lancé grace au bouton « rechercher » dans la userform « Départ ». la recherche se fait grace au nom du client dans la ComboBox16 ( en haut à droite du formulaire de recherche ).

Cette méthode fonction mais elle à beaucoup de contraintes, c’est pourquoi je travaille sur ce nouveau projet qui consiste à répartir le fichier reçu entre les différents utilisateurs. Dès réception du fichier je le partage le tableau entre tous les utilisateurs en alimentant directement leurs fichiers. L’utilisateur n’aura plus besoin d’aller récupérer le numéro du client, il va le trouver directement dans le formulaire quand il va l’ouvrir. L’objectif est d’avoir un seul formulaire au lieu de deux.

Comme les anciennes ligne déjà traitées ( Traitement total ou partiel ) seront mélangées avec les nouvelles lignes que je rajoute dès réception d’un nouveau fichier, j’ai mis en place la condition de la première ligne dont la colonne X est vide.

Cette colonne contient le statut de la fiche, tant qu’elle n’est pas renseignée le traitement n’est pas fait ( ni partiel, ni total ), et donc c’est la ligne a afficher dans le formulaire lors de son ouverture. En bref, je voudrais afficher la première ligne traitable et une fois le formulaire validé, je stocke les infos saisies dans la feuille BD ( pas d'ajout de ligne, c’est la même ligne qui doit être complétée ) et je passe à la seconde ligne traitable. Encore une fois merci de votre aide.

Edit dan : fichier supprimé pour données confidentielles

Bonjour,

@Yvouille :

Je t'avais proposé un début de solution afin de voir dans quelles directions continuer, mais je constate que Dan t'a également apporté son soutien. Ayant bénéficié moi-même entre deux et trois mille fois de son aide - à 100 % avec satisfaction - je suis persuadé que tu es entre de bonnes mains

C'est vrai que l'on a travaillé sur pas mal de trucs ensemble depuis des année. Mais merci du compliment !

@Amine2020 :

Pour mieux comprendre mon travail, ci-joint, une copie du fichier d’origine et une

votre fichier posté --> Il y a des données confidentielles là non ? les num de tel
Donc je n'interviens pas sur votre dernier fichier mais sur le précédent que j'ai posté dimanche.

Si j'ai bien compris, on ouvre l'usf en se basant sur la première cellule vide en colonne X. Vous complétez l'usf et lorsque vous validez, on réinitialise l'usf et on reprend les données d'une nouvelle ligne donc la cellule x est vide.

L’utilisateur n’aura plus besoin d’aller récupérer le numéro du client, il va le trouver directement dans le formulaire quand il va l’ouvrir. L’objectif est d’avoir un seul formulaire au lieu de deux.

Donc dans le fichier que j'ai posté dimanche, il y a 4 formulaires. Hormis celui dont vous parlez, quid des autres ?
En gros comment allez vous fonctionner avec ce nouveau fichier. comme ceci ?
- ouverture sur feuille accueil
- click sur Saisie
- choix de l'option ? Si oui, quelle est l'option qui ouvre l'usf en tenant compte de la cellule Vide en X

Bonjour,

En effet, dans ce type de fichier il ya des données confidentielles comme les numéros de téléphone, les Noms, etc mais rassurez vous avant d'envoyer mon dernier fichier j'ai procéder à plusieurs modifications pour ne pas prendre le risque d'une faute professionnelle. Les noms sont fictifs et les numéros pareil ( il ya un premier chiffre, puis le numéro suivant c'est avec +1, et ainsi de suite, vous pouvez donc travailler sur ce fichier sans problème, je joins une copie. le nouveau fonctionnement c'est comme vous le décrivez

- ouverture du fichier directement sur la feuille accueil et le formulaire "Départ"
- click sur le bouton "Nouveau"
- Ouverture du formulaire "Fiche_Client avec les données de la première ligne dont la colonne X est vide, pas besoin de passer par une option pour afficher les données, le but c'est des les afficher directement lors de l'ouverture ( Dans userfor initialize )

- Traitement et remplissage des différents champs, puis valider

_ Une fois le formulaire validé, les données sont enregistrées dans le tableau sur la même ligne et le formulaire se réinitialise avec les nouvelles données comme lors de l'ouverture

Le bouton rechercher servira à l'utilisateur pour revenir sur un dossier pour compléter un traitement. Pour le moment il fonctionne bien avec une recherche à partir du nom prénom mais si vous avez une autre idée je suis preneur. Cordialement

82test-web1.zip (524.38 Ko)

Ok je considère que le bon fichier est celui que je vous ai envoyé dimanche (anime-test2)

Quel est le bon fichier ? le fichier de dimanche j'espère pour lequel vous me demandiez de répondre à deux points

Bonjour,

Oui vous pouvez travailler sur le fichier de dimanche.

Cordialement

Donc je reviens à ce que je demandais :

Le click sur le bouton NOUVEAU ne servira plus pour ajouter une nouvelle donnée mais uniquement pour modifier un dossier existant ?
En gros Vmod serait toujours égal à 1 et à la valeur 2

2 pour création
1 pour modification

Tant qu'à faire, au sujet de vnr qui reprend le nombre de ligne, quel était le but poursuivi et pourquoi ajoutiez-vous le nombre de ligne en colonne AA ?

Bonjour,

Vu que je n'ai pas de réponse à mon post précédent, pourriez-vous me dire si votre souci est toujours d'actualité ?

Si non, pourriez-vous cloturer le fil

Cordialement

Rechercher des sujets similaires à "traiter base donnee formulaire vba usf"