Microsoft 365 Vba saisie semi automatique dyn

Toufik26

XLDnaute Nouveau
Bonjour
Dans un premier merci d avance pour votre temps et votre travail

Je vais vous expliquer a quoi ressemble mon application et a quoi sert elle.

Je gere trois gros relais.
Mondial relay 300 colis jours
Relais colis 100 colis jours
Ups 100 colis jours

Donc autant d entrees a reception des colis

L application se decompose en deux parties

Une page accueil avec deux boutons un reception et un recherches et suppression donnant chacun sur un userform different

Et une feuille bdd ou se copie chaque entree

Le bouton reception
Le userform est compose de quatre combobox
Type casier de A a C
Numero de colis (la je scanne le code barre pour avoir le numero de colis)
Et enfin Noms (je tape le nom et prenom de chaque colis chaque jour et de tous)
Une touche validation qui permet d enregistrer les donnees sur la bdd avec un numero qui s incremente automatiquement a chaque entree avec edition de ce numero sur une etiquette que je colle ensuite sur le colis pour le classer dans son casier correspondant au fil de l eau et une info stock et date d entree
Une case a cocher chaque debut de mois pour revenir a 1

Le cote fastidieux est la

Mes demandes si cela est possible

Avoir une base par relais
La base mondial relay garder sa numerotarion et sorti de l etiquette numero (pour mondial le userform est bon)
La base relais colis (relais colis a deja sa numerotation une lettre par jour de A a G plus une incrementation numerique)
Dans le userform relais colis il faudrait pouvoir chaque jour mettre la lettre correspondant au jour et avoir l incrementation numerique comme mondial avec sorti de l etiquette lettre plus numero en gros comme mondial (ex: A1 etc)
Une base UPS ( avec une numeration propre incrementer et sorti etiquette comme mondial)

Pour chaque userform une saisie semi automatique dynamique pour avoir le moins de saisie possible et le moins de choix possible pour etre rapide pour entree les colis le but est la

Je pensais a un bouton reception par type de relais avec un userform propre pour faciliter les bases de donnees et ne pas avoir a chaque colis a renseigner le type de relais

Le bouton recherches et suppressions

Ce bouton sert a chercher en saisie dynamique des la premiere lettre ou le premier numero de colis issu du code barre le ou les colis
Cela m amene a me donner tous les colis d un meme client figurant aujourd hui dans la BDD pour les retrouver et pouvoir les donner aux clients
En cliquant sur les lignes des colis donnes cela nous les met dans le bas pour validation ou annulation.
La validation entraine la mise en mode livre dans la bdd au lieu de stock

Pour cette partie forcement il faudra que la recherche se fasse sur les trois bases.

Ma demande dans cette partie c est faire une base de donnee commune des colis livres ou reclames classee alphabetiquement avec date de sortie sans enlever les doublons et pouvoir la purger chaque fin de mois et une base de donnee uniquement du nom et prenom a partir des colis livres et supprimer les doublons.
C est a partir de cette base que l on pourrait faire la saisie semi automatique dynamique de chaque userform reception

Au moment de la suppression retirer de la ou les bases concernees le ou les colis et alimenter la base de donnees en supprimant le ou les doublons et si possible la classer alphabetiquement

Dans cet userform il faudrait rajouter un choix non bloquant facultatif "reclame" qui lorsque je cocherai la case en effectuant une recherche mettrai ce motif lors de la suppression

Pour info j imprime sur des etiquettes 50 largeur et 80 de longueur

Pour mondial et ups je ne sais pas si cela est faisable mais j aimerai reproduire le code barre sur le bas de l etiquette pour etre lu par leur scan lors des inventaires hebdomadaire ( ce qui eviterai de deplacer chaque colis pour lire le code barre car toujours sur le cote pour gain de place sur les etageres

Voila j espere avoir ete explicite. Je sais que la tache est rude car je ne sais pas faire et surement tres longue aussi merci a celles ou ceux qui auront le courage de faire mes demandes
Merci car souvent a la fermeture je passe 2 a trois heures pour entrer tous les colis c est fastidieux mais en donnant 200 colis par jours voir davantage c est une facilite extreme et de rapidite

Voila merci je vous joins un fichier type avec quelques entrees

Tres cordialement et sincerement merci si cela est faisable. Merci de garder le format actuel de la bdd pour pouvoir le cas echeant
 

Dudu2

XLDnaute Barbatruc
T'as essayé diverses options :
- Placer le fichier dans un répertoire (pas sur OneDrive), ça donne quoi ?
- Utiliser un autre PC, ça donne quoi ?
Envoie au moins une capture d'écran du message pour savoir qui l'envoie ce message.
Là on est dans le bleu complet.
 

sueur

XLDnaute Nouveau
Jai essaye sur trois ordi differents onedrive coupe c est pareil des que je change de champs ca me met dans le haut de l userform ne repond pas et il faut attendre au moins une minute pour que le champs soit actif et idem en passant au champ suivant
 

Pièces jointes

  • Screenshot_20210721-171118_Photos.jpg
    Screenshot_20210721-171118_Photos.jpg
    170.7 KB · Affichages: 10

Toufik26

XLDnaute Nouveau
Ça n à rien à voir avec onedrive puisque le fichier de base reception userform fonctionne dans le fichier de base que je vous ai fourni
La le problème est que je ne peux pas sélectionner numéro de colis ou nom directement ça plante en mettant ne répond pas et fonctionne après plus d une minute et ainsi de suite.
Est ce que chez vous cela fonctionne bien ?
Je k ai mis à la maison sans onedrive c est pareil
Sommes nous sur la même version d office

Cordialement

Sinon dommage c était bien
 

sueur

XLDnaute Nouveau
j ai ce message voir photo si je choisis la taille puis le numero de colis puis le nom la saisie impossible et apparition de ce message
si je choisis la taille et directement le nom la ca met ne repond pas on attend et ca passe mais souvent je passe directerment au noms

en cherchant certain parlent de memory d initialisation de combobox ou de referencement qui n arrive pas a se faire la je sais pas moiu de quoi il parle

cordialement
 

Dudu2

XLDnaute Barbatruc
Bonjour,

J'ai supprimé tous les anciens fichiers du fil et on va essayer d'autres versions.

Je viens de me rendre compte que l'appel à l'API pour trouver le nombre de dimensions d'un tableau prend 2 fois plus de temps qu'une simple boucle basée sur un On Error, donc j'ai viré l'API du tri et modifié pour que les appels récursifs soient identifiés de manière à ne pas refaire des opérations inutilement.

1 - Essaie MAJOUBASHOPCOLIS4.xlsm qui intègre le Quick Sort (sans API) et la Saisie Assistée (API pour GetAsyncKeyState).

2 - Essaie MAJOUBASHOPCOLIS5.xlsm qui intègre le Quick Sort (sans API) SANS la Saisie Assistée compensée par le comportement naturel des ComboBox sur liste triée. Donc aucune API dans ce fichier.

Ci-dessous pour info le code basique pour trouver le nombre de dimensions d'un tableau plus efficace que d'aller via l'API analyser la description d'un Array dans les internes de l'implémentation des variables.
VB:
'------------------------------------------
'Nombre de dimensions d'un tableau sans API
'------------------------------------------
Private Function GetDims(Source As Variant) As Integer
    Dim i As Integer
    Dim k As Long
 
    'Pas un tableau
    If Not IsArray(Source) Then
        MsgBox "Function GetDims Error: The 'Source' argument is not an Array !"
        Exit Function
    End If
 
    On Error Resume Next
 
    'Nombre de dimensions du tableau
    For i = 0 To 99
        k = UBound(Source, i + 1)
        If Err.Number <> 0 Then Exit For
    Next i
 
    On Error GoTo 0
 
    GetDims = i
End Function
 
Dernière édition:

sueur

XLDnaute Nouveau
UN GRAND MERCI !!!!!!!
merci pour votre implicationet vos recherches
j ai pris mahjouba5 c est parfait
je viens de l essayer avec l arrivee des comis ups un gain de temps enorme enorme

du fond du coeur merci de votre aide

bon courage a vous et toutes et tous
 

Dudu2

XLDnaute Barbatruc
comment fait on pour mettre resolu svp
Dans la colonne de droite grisée tu dois trouver un petit symbole que tu cliques au niveau du post dont tu penses que c'est la solution.

j ai pris mahjouba5 c est parfait
As tu essayé MAJOUBASHOPCOLIS4.xlsm ?

MAJOUBASHOPCOLIS5.xlsm est la version sans mon module de Saisie Assistée 😭 et surtout sans API dont je finis pas supposer que c'est la cause de tes soucis de lenteur.
Comme l'a fait remarquer @patricktoulon, elle fonctionne selon le standard des ComboBoxes (avec liste triée) dont l'ergonomie est à mon goût moins sympa que celle du module de Saisie Assistée. Mais nécessité fait loi !
 

Dudu2

XLDnaute Barbatruc
En définitif je viens de faire en réel avec mahjouba 4 c est pour moi encore mieux et direct et rapide
Ah cool ! Ça confirme que l'ergonomie du module de Saisie Assistée est plus sympa que celle native de la ComboBox comme je la percevais.

Et que ce n'est pas l'API du GetAsyncKeyState() qui pose problème.
Peut-être celle du RtlMoveMemory() plus délicate ? Difficile à dire sans pouvoir tester.

De toutes façons, j'ai dû réfléchir à une solution SANS API dans la saisie assistée et je pense que ça fonctionne.
STP, peux-tu reprendre le fichier modifié MAJOUBASHOPCOLIS4.xlsm du Post #51 et confirmer que cela fonctionne comme attendu..
 
Dernière édition:

sueur

XLDnaute Nouveau
CA MARCHE NICKEL !!!!!!!!

une autre demande est il possible de faire la meme chose sur le userform recherche svp ca facileterai egalement grandement lorsque l on recherches les colis des clients pas oblige de taper tout

si possible bien evidemment sinon c est deja formidable

bonne soiree
 

Dudu2

XLDnaute Barbatruc
Comprends pas... @sueur c'est la même personne que @Toufik26 ?

faire la meme chose sur le userform recherche
Sur quel champ ? Recherche ?
Sur quelle colonne de la BDD ? Le nom ? Le n° de colis ? Le N° de casier ? Plusieurs ?
On peut rechercher un n° de colis selon divers critères...

En l'absence de réponse j'ai affiché la liste des n° de colis sur le champ Recherche.
 
Dernière édition:

Toufik26

XLDnaute Nouveau
Désolé j étais occupé à cet heure ça se bouscule.

Oui vous avez raison il y a plusieurs critères
Noms
Stock
Numéros de colis
Sur la BDD oui bien sur
Dans cette partie je ne recherche que les colis en stock . Les colis livrés non pas d intérêt et c est à titre très exceptionnel je peux par le biais d un tri le faire manuellement
Toutes mes excuses pour cet oubli

Je regarde cela dans une heure environ le temps de fermer et de rentrer

Merci à vous
 

Discussions similaires

Réponses
6
Affichages
239
Réponses
5
Affichages
413

Statistiques des forums

Discussions
312 196
Messages
2 086 099
Membres
103 116
dernier inscrit
kutobi87