Macro pour identifier case vide et copie ligne

Bonjour,

j'ai un classeur avec des onglets clients et des onglets vendeurs.

Pour simplifier et pour correspondre au fichier d'exemple : dans l'onglet vendeur, disons que mes colonnes sont A B C D E F

A=code facture

B=Vendeur

C=Date facture

D=Relance 1

E=Relance 2

F=Relance 3

G=Huissier

Une fois par semaine, quand un vendeur rentre son mot de passe et son user, tous les onglets sont cachés sauf le sien. Cet onglet répertorie l'historique des factures qu'il a généré. Si les clients ne paient pas, il a une relance 1 à faire au bout de 8 jours, une relance 2 au bout de 15, une relance 3 au bout de 30, un contact chez l'huissier au bout de 38.

J'aimerai qu'un userform se lance à l'ouverture de l'onglet et identifie toutes les relances à faire pour le vendeur puis les fait apparaître une par une dans l'userform (pas en même temps). C'est à dire qu'une relance non faite est identifiée, il écrit dans une textbox ce qu'il a fait comme relance, il valide, le contenu est copié dans la bonne case, une seconde relance non faîte est identifiée, etc... jusqu'à ce qu'il n'y ait plus de relance non faite.

Je suis parti sur l'idée de faire le plan de macro suivant mais je ne sais pas comment faire pour que les données n'arrivent pas en même temps dans l'userform et cause une erreur :

Sub userform initialize

IF "si aujourdhui-7<Date facture<aujourdhui-14" And if "rien d'écrit dans la case relance 1 Then

afficher contenu cellule de A dans Textbox 1

afficher contenu cellule de C dans Texbox 2

afficher contenu cellule R1 dans Textbox 3

afficher contenu cellule R2 dans Textbox 4

afficher contenu cellule R3 dans Textbox 5

afficher contenu cellule Huissier dans Textbox 6

msg Box "Remplir relance 1"

Else IF si aujourdhui-15<Date facture<aujourdhui-29" And if "rien d'écrit dans la case relance 2 Then

afficher cellule de A dans Textbox 1

afficher cellule de C dans Texbox 2

afficher contenu cellule R1 dans Textbox 3

afficher contenu cellule R2 dans Textbox 4

afficher contenu cellule R3 dans Textbox 5

afficher contenu cellule Huissier dans Textbox 6

msg Box "Remplir relance 2"

Else if si aujourdhui-30<Date facture<aujourdhui-37" And if "rien d'écrit dans la case relance 3 Then

afficher cellule de A dans Textbox 1

afficher cellule de C dans Texbox 2

afficher contenu cellule R1 dans Textbox 3

afficher contenu cellule R2 dans Textbox 4

afficher contenu cellule R3 dans Textbox 5

afficher contenu cellule Huissier dans Textbox 6

msg Box "Remplir relance 3"

Else if si aujourdhui-38<=Date facture And if "rien d'écrit dans la case relance 3 Then

afficher cellule de A dans Textbox 1

afficher cellule de C dans Texbox 2

afficher contenu cellule R1 dans Textbox 3

afficher contenu cellule R2 dans Textbox 4

afficher contenu cellule R3 dans Textbox 5

afficher contenu cellule Huissier dans Textbox 6

msg Box "Remplir action huissier"

Sub Command buttonclick

If R1="" Then

msg box "Merci de remplir relance 1"

Else If R2=""Then

msg box "Merci de remplir relance 2"

Else If R3=""Then

msg box "Merci de remplir relance 3"

Else If Huissier=""Then

msg box "Merci de remplir relance Huissier"

Find "lignes correspondante en fonction du contenu de Textbox 1

copier contenu cellule R1, R2, R3, Huissier dans les cellules correspondantes.

Unload l'userform

load l'userform avec une nouvelle relance à remplir.

Comment faire pour que ce schéma de macro ne finisse pas en erreur ? Si vous avez des conseils pour coder cette macro, je prends tout.

Merci d'avance aux courageux qui auront tout lu !!!

fichier :

Salut,

Je pense qu'il ne faut pas faire de fixation sur les textbox quand tu peux avoir toutes les informations à l'écran.

je te propose ma solution:

  • avec des MFC qui fonctionnent et colorient tous les niveaux de relances donnés selon les dates de factures.
  • Un rappel en commentaire avec une formule qui répéte en une phrase le niveau de relance à effectuer.
  • Pour plus d'informations sur les relances, tu peux ajouter des commentaires en clic droit pour chaque niveau de relance, puis c'est
indiqué avec un point rouge pour les cellules concernées.

7relances.xlsx (16.07 Ko)

A+

Fronck

Bonjour Fronck,

merci du temps passé sur mon problème.

Malheureusement, je ne souhaite pas rajouter des MFC, j'en ai déjà énormément... Je ne suis pas fan des commentaires non plus désolé ^^

Bonjour rickyn,

C'est bien les formulaires, mais je suis encore néophyte dans ce domaine et je ne vois pas l'utilité d'avoir des boites de messages qui s'enchainent. Par contre qu'on garde une vue des choses à faire est l'essentiel.

J'ai fait une macro pour observer les 2 conditions de "rien d'écrit" et "délai dépassé", j'ai enlever les MFC pour n'en refaire qu'une sur la relance à faire en commentaire.

6relances2.xltm (29.99 Ko)

a+

Fronck

Bonjour Rickyn,

Cela dit çà pourrait être utile à partir de 50 lignes, maximum que j'ai indiqué en propriétés du bouton de défilement.

Voilà une autre version avec un formulaire de défilement de lignes.

sans titre

Pour modifier la taille des zones de textes, il faut se mettre en mode création dans le développeur.

j'ai changé le nom du vendeur par ceux des clients dans la feuille excel.

J'ai mis le nom du vendeur à l'onglet, ce qu'il faudra changer pour chaque vendeur en allant dans le développeur VB et double cliquant sur sur sa feuille et le module 1.

sans titre2
5relances3.xltm (51.68 Ko)

Cà te va ?

Fronck

Salut Fronck,

je vais voir ce que je peux faire avec les listes déroulante, ça peut en effet être une alternative ! Merci !

Salut Rickyn,

Sinon tu peux utiliser les filtres en coiffant toute la zone avant.

sans titre
6relances3.xltm (51.14 Ko)

a+

Fronck

Rechercher des sujets similaires à "macro identifier case vide copie ligne"