" aller-retour UserForm puis calcul dans Feuille Excel puis UF... "

David69400

XLDnaute Junior
Bonsoir le Forum, bonsoir plus directement aux quelques membres qui m'ont déjà aidé (Robert, Papou, Cisco et M.STAPLE entre autre :rolleyes:

Voilà, j'avance petit à petit sur le chemin de la VBA, mais celui est parfois ardu et là j'ai de nouveau besoin d'un regard extérieur pour m'aider à avancer, d'où mon retour sur le forum...fidèle apprenti.

Bref descriptif:
J'ai besoin d'une aide sur mon code pour faire fonctionner un UF qui appelle le choix d'un article avec 2 critères, renvoie ces infos dans une feuille excel, qui calcul d'après ces valeurs, une Proposition ,que je veux remonter dans l'UF et valider ou modifier, avec envoie de la valeur finale (validée) dans une colonne d'un second onglet...
Et last but not least, je souhaite ne pas quitter l'UF et que la combobox de selection de l'article, passe automatiquement au prochain valeur non validé...

J'ai écrit le code sur la base de mes connaissances accumulées à date, mais cela ne fonctionne pas.
En revanche, cela permettra à la bonne âme qui s'y penchera, de suivre le raisonnement employé
(en l'état, je lance mon UF, sélectionne le produit, remonte les 2 infos liées et puis... c'est tout).

Voilà, pas de blabla, un schéma que j'ai fait aussi détaillé que possible, que vous trouverez sur l'onglet explication du fichier joint.


Je remercie par avance celui ou celle qui choisira mon post, ..., je ne vous le cache pas mais j'ai vraiment besoin d'aide car je n'avance plus...


Bonne nuit,


David
 

Pièces jointes

  • David170714 V0.xlsm
    88.8 KB · Affichages: 58

Lolote83

XLDnaute Barbatruc
Re : " aller-retour UserForm puis calcul dans Feuille Excel puis UF... "

Salut David69400,
Voici une proposition qui récupère les infos du formulaire sur la feuille XL puis inversement sans fermé le formulaire.
Le reste fonctionne chez moi
@+ Lolote83
 

Pièces jointes

  • Copie de DAVID - Remplir formulaire.xlsm
    330.4 KB · Affichages: 76

David69400

XLDnaute Junior
Re : " aller-retour UserForm puis calcul dans Feuille Excel puis UF... "

Bonjour le Forum, Bonjour Yvan !

C'est SUPER !!!

Vous m'avez débloqué mon code et ca marche quasi comme j'avais écris, je suis très content.
A priori, j'étais donc pas loin du but , mais il fallait mettre l'huile dans les rouage et donc vraiment, merci !:D

J'ai nettoyé mon code avec vos indications (j'ai remis à ma sauce la présentation avec les i=..., je sais que c'est pas toujours utile, mais j'ai pris cette habitude, ne m'en tenais pas rigueur).

J'ai surtout rajouté une condition à l'initialisation pour se positionner sur le dernier article non validé et ça marche bien.

En revanche, et c'est là ou je me permets de vous solliciter une seconde fois:rolleyes:, dans mon fichier joint, comme dans celui que vous m'avez transmis ce matin, j'ai un "petit" souci de boucle.

C'est à dire que quand j'ai validé l'ensemble des ligne, la Combobox se met en vide, et si je clique, ça repropose le dernier article en effaçant la valeur validée juste avant.

J'ai essayer de mettre une condition sur la formule Find avec Msgbow, mais visiblement, ca ne fonctionne pas.


If Trouve Is Nothing Then
MsgBox "Articles tous pointés"
Unload Me
Else
Li = Trouve.Row
' on rappelle l'article dans le combobox de choix
i = 4
Me.Controls("combobox" & i).Value = O2.Cells(Li, i).Value
End If



Pourriez vous y jeter, svp un dernier coup d'oeil et ce sera parfait pour moi.


En vous remerciant encore pour ce 1er retour très efficace et vous souhaitant une bonne journée.


David
 

Pièces jointes

  • David170714 V1.xlsm
    37.1 KB · Affichages: 54

Lolote83

XLDnaute Barbatruc
Re : " aller-retour UserForm puis calcul dans Feuille Excel puis UF... "

Salut David69400,
J'ai commencé a regarder mais je suis en plein préparatif pour les vacances.
Je rentre normalement vers le 30 juillet.
Si tu as le temps, je regarderais à mon retour sinon peut être que quelqu'un d'autre aura fait le boulot à ma place.
@+ Lolote83
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : " aller-retour UserForm puis calcul dans Feuille Excel puis UF... "

Bonsoir David, Lolote, bonsoir le forum,

David j'avoue ne pas bien comprendre ton code... Ou du moins, ne pas comprendre où tu veux en venir.
Je décortique :
1. tu cherches la valeur de la cellule B3 de l'onglet PDP dans la plage C4:C100 de l'onglet Stock
2. tu définis la variable Li=Trouve.row. Cela signifie que :
• tu es sûr de trouver la valeur. Exact ?
• tu es aussi sûr qu'il n'y a qu'une seule fois cette valeur. Exact ?
Sinon tu auras des surprises !
3. tu renvoies dans la colonne E (ligne Li) de l'onglet PDP, la valeur de la textbox5 (Quantités Validées)
4. tu places le curseur dans la ComboBox4
5. tu recherches une valeur vide dans la plage E3:E100
• Tant que tu n'auras pas rempli toutes les cellules de la plage tu vas toujours trouver une valeur vide... C'est logique. Ton message ne s'affichera qu'à la ligne 100

Je pense qu'il te faut comparer la dernière ligne éditée de la colonne A avec la dernière ligne éditée de la colonne E. Si se sont les mêmes ligne alors message, sinon tu récupères dans la ComboBox4 la valeur de la cellule en colonne D de la ligne correspondant à la première ligne vide de la colonne E
Si c'est ça, le code serait :

Code:
     'on cherche la valeur vide
        Dim DLA As Integer
        Dim DLE As Integer
        'définit la dernière ligne éditée de la colonne 1 (=A) de l'onglet O2
        DLA = O2.Cells(aaplicatiopn.Rows.Count, 1).End(xlUp).Row
        'définit la dernière ligne éditée de la colonne 5 (=E) de l'onglet O2
        DLE = O2.Cells(aaplicatiopn.Rows.Count, 5).End(xlUp).Row
        If DLA = DLE Then 'si les deux variables sont identiques
            MsgBox "Articles tous pointés" 'message
            Unload Me 'vide et ferme l'UserForm
        Else 'sinon
            ' on rappelle l'article dans le combobox de choix
            i = 4
            Me.Controls("combobox" & i).Value = O2.Cells(DLE, i).Value 'récupère la valeur en colonne D
        End If 'fin de la condition
p.s. Je vois que t'es toujours accro au ComboBox & i. Heureusement il existe un nouveau médicament sur le marché pour soigner cette maladie... Salmanie500à prendre2 fois par jour.

Ton fichier modifié :
 

Pièces jointes

  • David170714 V1-2.xlsm
    36.9 KB · Affichages: 57

David69400

XLDnaute Junior
Re : " aller-retour UserForm puis calcul dans Feuille Excel puis UF... "

Bonjour Robert, Bonjour le Forum,

merci à Yvan pour son message et bonne vacances.:)

et merci à Robert pour le sien aussi, d'où mon retour:


1. tu cherches la valeur de la cellule B3 de l'onglet PDP dans la plage C4:C100 de l'onglet Stock
2. tu définis la variable Li=Trouve.row. Cela signifie que :
• tu es sûr de trouver la valeur. Exact ?
• tu es aussi sûr qu'il n'y a qu'une seule fois cette valeur. Exact ?
Sinon tu auras des surprises !

=> Oui, je contrôle l'unicité de création du libellé

3. tu renvoies dans la colonne E (ligne Li) de l'onglet PDP, la valeur de la textbox5 (Quantités Validées)
4. tu places le curseur dans la ComboBox4
5. tu recherches une valeur vide dans la plage E3:E100
=> Oui

• Tant que tu n'auras pas rempli toutes les cellules de la plage tu vas toujours trouver une valeur vide... C'est logique. Ton message ne s'affichera qu'à la ligne 100
=> en fait, non... dans la V1 transmise, lorsque j'avais validé E4 à E9 de O2, la formule n'attendait pas l'aller en ligne 100 , mais étonnement, restai sur la L9 (la dernière) et si je cliquais une fois de trop après voir validé cette case, L9, ca l’effacait puis permettait de la ressaisir... et ainsi de suite en boucle.


Ma demande reste donc, d'avoir , simplement, une possibilité comme tu l'as bien compris, de vérifier qu'on a pas loupé une case en dans cette colonne QTE_VALIDEE dut tableau TAB_STOCK de l'onglet O2 (ie STOCK)


j'ai donc trouvé ta proposition intéressante (évidemment:rolleyes:):

Je pense qu'il te faut comparer la dernière ligne éditée de la colonne A avec la dernière ligne éditée de la colonne E. Si se sont les mêmes ligne alors message, sinon tu récupères dans la ComboBox4 la valeur de la cellule en colonne D de la ligne correspondant à la première ligne vide de la colonne E

J'ai ajusté le mot "aaplicatiopn." dans le code pour le faire fonctionner, mais il doit y avoir une autre condition, car au final, dès qu'on remplit une première saisie, cela renvoie toujours ''tous pointés" et j'arrive pas à voir d'où cela vient . cf (ton fichier V1-3)


Merci bien pour ton aide !!!

David
 

Pièces jointes

  • David170714 V1-3.xlsm
    33.3 KB · Affichages: 53

Robert

XLDnaute Barbatruc
Repose en paix
Re : " aller-retour UserForm puis calcul dans Feuille Excel puis UF... "

Bonjour David, bonjour le forum,

J'ai déjà rencontré ce problème avec les tableaux que je commence à détester car on ne peut atteindre la première cellule vide d'une colonne qu'en partant du haut. Du coup s'il il y a un trou dans la colonne on n'atteint plus la dernière cellule de la colonne mais celle où il y a le trou...
Une solution donc, mais qui implique :
• soit qu'il n'y ait aucun trou (cellule vide) entre la première et la dernière éditée,
• soit que cet arrêt sur la première ligne vide rencontrée en descendant te convienne pour faire ce que tu as à faire.

le code devient donc :

Code:
'définit la dernière ligne éditée de la colonne 1 (=A) de l'onglet O2
DLA = O2.Range("A3").End(xlDown).Row
'définit la dernière ligne éditée de la colonne 5 (=E) de l'onglet O2
DLE = O2.Range("E3").End(xlDown).Row

[Édition]
L'autre solution serait de garder le code est de supprimer ce tableau de m... pour avoir des données d'avant la grande co....erie...
 

David69400

XLDnaute Junior
Re : " aller-retour UserForm puis calcul dans Feuille Excel puis UF... "

Bonsoir Le Forum, Bonsoir Robert,

Avec un peu de retard avec cette période de vacances, je te remercie pour ton retour du 21 juillet.
C'est bon, j'ai pu arriver à m'en sortir grâce à tes différents retour.

J'ai bien pris note de la spécificités parfois contraignantes des tableaux nommés.

Merci !

David
 

Discussions similaires

Statistiques des forums

Discussions
312 235
Messages
2 086 476
Membres
103 228
dernier inscrit
malik832