Boucle for plusieurs conditions dans un userform

Bonsoir le forum, les intervenants,

Je reviens vers car je rencontre un problème concernant la saisie de données via un UserForm.

J'ai réalisé le code suivant pour permettre une saisie sans erreur a l'utilisateur,

Je cherche a identifier pour le même client (Ref4) colonne "A", la même facture (Ref1) colonne "H", la même référence (Ref2) colonne "I", dans certains cas le même produit (Ref3) colonne "C".

ActiveCell étant la colonne "L".

ce code ne fonctionne pas correctement, parfois il me copie les données du fichier, je pense aux format texte de certaine cellule.

 Private Sub CommandButton1_Click()
Dim Ref1 (standard)
Dim Ref2  ( format texte)
Dim Ref3 ( format de cellule texte)
Dim Ref4 (format de cellule texte)
   Ref1 = ActiveCell.Offset(0, -3) 'colonne  H 
    Ref2 = ActiveCell.Offset(0, -4) 'colonne  I
    Ref3 = ActiveCell.Offset(0, -9) 'colonne C
    Ref4 = ActiveCell.Offset(0, -11) 'colonne A  
    With Sheets("exemple")
         For i = 7 To [K10000].End(xlUp).Row
            If OptionButton1 = True Then
                 If Cells(i, "H") = Ref1 And Cells(i, "I") = Ref2 And Cells(i, "A") = Ref4 Then
                    If Me.ComboBox1 = "POSITIF" Then
                    .Range("O" & ActiveCell.Row & ":R" & ActiveCell.Row).Copy Destination:=Range("O" & i)
                    .Range("L" & ActiveCell.Row).Copy Destination:=Range("L" & i)
                    .Range("G" & i).Copy Destination:=Range("N" & i)
                    Else
                    .Range("O" & ActiveCell.Row & ":R" & ActiveCell.Row).Copy Destination:=Range("O" & i)
                    .Range("L" & ActiveCell.Row).Copy Destination:=Range("L" & i)
                    .Range("G" & i).Copy Destination:=Range("N" & i)
                     Range("N" & i).Select
                     Selection = Range("N" & i) * 0
                    End If
                End If
            End If
            If OptionButton2 = True Then
                 If Cells(i, "H") = Ref1 And Cells(i, "I") = Ref2 And Cells(i, "A") = Ref4 And Cells(i, "C") = Ref3 Then
                    If Me.ComboBox1 = "POSITIF" Then
                    .Range("O" & ActiveCell.Row & ":R" & ActiveCell.Row).Copy Destination:=Range("O" & i)
                    .Range("L" & ActiveCell.Row).Copy Destination:=Range("L" & i)
                    .Range("G" & i).Copy Destination:=Range("N" & i)
                    Else
                    .Range("O" & ActiveCell.Row & ":R" & ActiveCell.Row).Copy Destination:=Range("O" & i)
                    .Range("L" & ActiveCell.Row).Copy Destination:=Range("L" & i)
                    .Range("G" & i).Copy Destination:=Range("N" & i)
                     Range("N" & i).Select
                     Selection = Range("N" & i) * 0
                    End If
                End If
            End If
        Next i
    End With
End sub

Si un intervenant peut regarder mon code, je suis preneur de toute remarque.

Je vous remercie, bonne soirée le forum.

Bonsoir,

dites moi ceci :

Dim Ref1 (standard)
Dim Ref2  ( format texte)
Dim Ref3 ( format de cellule texte)
Dim Ref4 (format de cellule texte)

Ce sont des rajouts que vous avez faits pour le forum ou bien Est-ce écrit comme cela dans votre code VBA ?

Car si c'est le cas alors ces lignes devraient être en rouge ce qui veut dire erreur de syntaxe !

Faut peut-être commencer par là déjà, non ?

@ bientôt

LouReeD

Après, on peut également dire qu'un code sorti de son contexte est difficilement appréciable, surtout avec une écriture comme la votre ! Attention, pas de moquerie entre nous, seulement chacun code à son image et sans le fichier ce n'est pas simple.

Donc, un petit fichier pour illustrer votre demande ?

@ bientôt

LouReeD

Bonsoir le forum, LouReeD, les intervenants,

Pensez-vous que je pourrais m'orienter sur une sélection via un filtre avancé pour déterminer ma plage variable par apport a ActiveCell ?

Je vous remercie.

Je ne sais pas , je n'arrive pas à comprendre le déroulé du code .

On a un tableau avec des référence, des clients, etc. Et un USF avec un vendeur, un type de produit et un lieu, on ne fait pas mention du client ou autre données.

D'où partons nous, où allons nous et comment y va-t-on ?

@ bientôt

LouReeD

Re bonsoir LouReeD,

Merci de m'avoir lu.

On a un tableau avec des référence, des clients, etc. Et un USF avec un vendeur, un type de produit et un lieu, on ne fait pas mention du client ou autre données.

effectivement je voulais pas polluer le fichier teste avec les données comme le nom du client, le prénom, ou le numéro de téléphone...les coordonnées des fournisseurs...

D'où partons nous, où allons nous et comment y va-t-on ?

Notre point de départ c'est le numéro de facture, pour chaque facture je dois renseigner le vendeur, le produit vendu et le lieu, je dois aussi renseigner au moment de la saisie s'il y a encaissement OUI/NON.

Je cherche au travers de l'UserForm, dans le cas par exemple d'une facture encaissée de ne pas écrire autant de fois le même commentaire plusieurs fois, je cherche a dupliquer le contenu des Combobox sur les lignes de la facture concernée.

Il arrive parfois que le client règle une partie la facture, donc une partie des produits, dans mon exemple, on cochant OptionButton2 ( règlement partiel) je duplique les commentaire des Combobox uniquement sur les produits réglés.

Au plaisir de vous relire.

Alors là c'est pas plus clair...

Sur votre fichier il y a 3 référence de facture pour trois clients différents qui ont commandé un certain nombre d'article.

Il faudrait maintenant simuler expliquer ce qui doit être fait, où et le résultat attendu.

Donc on ouvre le USF, on renseigne les données ici et là, on valide et je dois avoir tel résultat sur le tableau de la feuille excel.

Est-ce possible ?

@ bientôt

LouReeD

Re,

Sur votre fichier il y a 3 référence de facture pour trois clients différents qui ont commandé un certain nombre d'article.

Il s'agit d'un fichier test, le fichier sur lequel je travail contient plusieurs milliers de ligne.

Donc on ouvre le USF, on renseigne les données ici et là, on valide et je dois avoir tel résultat sur le tableau de la feuille excel.

Oui c'est exactement ça.

Oui c'est exactement ça !

et ben alors il est où le fichier avec le résultat attendu, ou au moins une image du USF rempli et la conséquence sur le tableau, avec des données, des couleurs pour se repérer...

Je vous avoue ne pas saisir votre fichier...

@ bientôt

LouReeD

Je vous avoue ne pas saisir votre fichier...

Désolé LouReeD,

Je vous joint mon fichier complété,

On appel le Userform pour la saisie en cliquant sur la Plage L7 L8..........L i

On remplie les combobox, et lors de la validation on aura les données saisie sur le fichier, comme l'exemple joint.

13exemple-v1.xlsm (29.86 Ko)

Merci a vous.

Je comprend un peu mieux !

Mais maintenant quelle est la différence entre encaissé OUI/NON et partiel / total ?

Car j'ai fais des tests, et si on met OUI pour encaissé et partiel alors on a :

OUI dans la colonne "montant déjà réglé" mais le solde reste à € (par exemple), ce dernier ne devrait-il pas passer à 0 ?

Tien, votre fichier me supprime mon verrouillage numérique et mon option "INSER"...

Pour moi en partiel encaissé la somme dans solde passe à 0 et OUI est affiché en colonne Réglé

pour moi un total encaissé, c'est l'ensemble de la vente du vendeur désigné qui passe à OUI et à 0

Et pour moi s'il n'y a pas "d'encaissé" il n'y a pas d'option total ou partiel, non ?

@ bientôt

LouReeD

Mais maintenant quelle est la différence entre encaissé OUI/NON et partiel / total ?

Si encaissement de la totalité de la facture "OUI " pour encaissement, donc le solde est a 0 sur la totalité de la facture.

Total et partiel permet de donner le choix de dupliquer la saisie sur la totalité de la facture ( total), ou juste sur le produit de la ligne concernée ( partiel).

Tien, votre fichier me supprime mon verrouillage numérique et mon option "INSER"...

Je ne sais pas quoi dire ? il y a rien dans ma macro pour supprimer le verrouillage numérique.

Pour moi en partiel encaissé la somme dans solde passe à 0 et OUI est affiché en colonne Réglé

Oui c'est exact.

pour moi un total encaissé, c'est l'ensemble de la vente du vendeur désigné qui passe à OUI et à 0

Pour moi un total encaissé, c'est la totalité de la facture ( numéro de facture), on ne tient pas compte du vendeur, qui passe à OUI et à 0.

Merci LouReeD, d'avoir pris de votre temps pour me lire.

Bonjour,

je remarque également que le USF s'ouvre si l'on clique sur la bonne colonne mais en dessous du tableau

Je vais regarder ceci de plus près au plus vite !

@ bientôt

LouReeD

Bon je ne comprend toujours pas !

réf client 125951

Astrid et Gaëlle ont travailler dessus.

Si je clic sur Astrid ligne 6

que je choisi "OUI" et total alors les 6 lignes vont se retrouvés avec Astrid - fruits - marché 5

les valeurs de la colonne K devraient passées à 0

Est-ce bien cela ?

Mais du coup il n'y a plus les trace de Gaëlle sur cette affaire...

A moins que la sélection du OUI soit fausse du fait qu'un partiel a déjà été fait par Gaëlle...

Sinon de ce que je sais "faire" :

votre plage de données je l'ai transformé en Tableau structuré sous Excel (insertion - tableau)

L'intersect pour lancer le USF se transforme en INtersect([Tableau1[vendeur]],Target) ce qui évite un ISF qui s'ouvre sur une cellule en dehors du tableau et de la colonne vendeur

La boucle i=7 to etc se transforme en For i=[Tableau1].Row to [Tableau].Rows.Count

Pour le reste bien que je ne comprenne pas la subtilité de l'action, le code m'a l'air correcte si ce n'est la copy vers la colonne K, puis la sélection de la cellule colonne K à laquelle on dit qu'elle vaut la valeur de la cellule colonne K multipliée par 0

Pourquoi ne pas inscrire 0 directement ?

Si vous pouviez me faire "un pas à pas" entre Astrid et Gaëlle pour reprendre mes interrogation avec les différent cas possibles à savoir 4 :

le choix NON avec partiel et total, le choix OUI avec partiel et total.

Merci par avance de ce travaille !

@ bientôt

LouReeD

Bonsoir LouReeD, le forum,

Merci LouReeD,

Si je clic sur Astrid ligne 6

que je choisi "OUI" et total alors les 6 lignes vont se retrouvés avec Astrid - fruits - marché 5

les valeurs de la colonne K devraient passées à 0

Est-ce bien cela ?

Oui c'est bien cela.

Pour rappel , on travaille par facture : ( TOTAL prime sur Partiel),

Cas1 - Pour la même facture, même référence facture, même référence client :

Deux possibilité : ( règlement ou non règlement en TOTALITE) ( on ne tient plus compte du vendeur, produit, lieu)

1) - soit la facture est réglée en totalité donc OUI et 0 sur toute la facture ( on aura le même vendeur sur ces lignes) c'est le but.

2)- soit la facture est NON réglée en totalité, on aura donc NON et le montant de la ligne correspondant et plus de trace des vendeurs sur cette affaire.

Mais du coup il n'y a plus les trace de Gaëlle sur cette affaire...

oui c'est exactement ca.

Cas 2- Pour la même facture, même référence facture, même référence client, MEME PRODUIT :

Deux possibilité : ( règlement ou non règlement du PRODUIT ( PARTIEL) au sein de la même facture)

1)- Le produit est réglé donc on aura OUI et 0 sur les ligne du produit ( produits) concerné (s), règlement partiel.

2)- Le produit est non réglé, on aura NON et le montant du solde sur les lignes concernées.

Pourquoi ne pas inscrire 0 directement ?

J'ai pas réussi a inscrire 0 directement, si vous pouvez me dire comment faire!

La subtilité étant les conditions des deux cas surlignés, sachant que total prime sur partiel, on oublie les vendeurs, les lieux...

On cochant total on aura la même chose sur toute la facture. On cochant partiel on aura la même chose sur les produits de la facture.

Merci encore LouReeD, au plaisir de vous relire.

Bonne soirée.

Bonsoir,

un fichier mais sans certitudes :

12exemple-v2-lrd.xlsm (31.31 Ko)

A défaut d'être bon il vous simplie le code comme expliqué plus haut et vous donne des informations sur comment coder certaine chose.

@ bientôt

LouReeD

Bonsoir LouReeD, le forum,

Merci beaucoup pour votre aide, j'ai appris beaucoup de choses.

J'ai fait un test aujourd'hui, le résultat est concluant.

Cependant j'ai deux problème, le premier vous l'avez déjà signalé :

Tien, votre fichier me supprime mon verrouillage numérique et mon option "INSER"...

Ca me le fait également, bien vu.

Je n'arrive pas à comprendre d'où vient ce problème, si vous avez une piste...

J'ai également un deuxième problème aujourd'hui, lorsque j'appel mon UserForm, il y a une suppression du texte de la cellule active de la colonne "C", est ce un problème de déclaration de variable?? ou dans l'instruction : Private Sub Worksheet_SelectionChange(ByVal Target As Range) ....

Si vous avez une piste,

Je tiens à vous remercier LouReed de m'avoir aidé.

Bonne soirée.

Au plaisir de vous relire.

Rechercher des sujets similaires à "boucle conditions userform"