[Déplae VB6 --> VBA] Création d'une macro "validation" sous excel

gams64 Messages postés 1 Date d'inscription samedi 14 novembre 2009 Statut Membre Dernière intervention 14 novembre 2009 - 14 nov. 2009 à 12:13
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 - 15 nov. 2009 à 13:34
Bonjour à tous et toutes !!

J'ai une petite question pour un gros problème.

J'ai quelques petites notions en vba, mais pas sufisament pour m'en sortir.

Pour faire simple je vais vous montrer la maccro que j'ai créer (bidouiller) et en suite (si vous y comprenez quelques chose, j'ai des modifications à y apporter.

Voici le bébé :


Sub Validation_pavois()
' validerclient Macro
' Macro enregistrée le 22/09/2003 par delta voiles
Sheets("formulaire").Select 'on va selec le feuillé "formulaire"
Range("A2:BB2").Select 'on selec la plage de donné de la ligne A du tableau
Selection.Copy 'fait copier le nouveau client recopié ligne 2
Sheets("Clients").Select 'on va sur la feuille clients et on la selectione
For i = 6 To 3000
If Cells(i, 1) = "" Then
Cells(i, 1).Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 'là on y fait un collage spécial en recopiant la ligne de données completes en gardant la même police
Sheets("Clients").Select 'on revient afficher la feuille client
Cells(5, 1).Show
i = 3000
End If
Next i
Range("A6").Select 'on selectione la cellule A6
Application.CutCopyMode = False 'on vide le presse papier de sa mémoire
Selection.Sort Key1:=Range("K5"), Order1:=xlDescending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal 'apparement depuis la case A6 on choisi la fonciton trier dans ordre alphabétique
Columns("K:K").Select
Range("K3").Activate
Selection.NumberFormat = "[$-40C]d-mmm-yy;@"
Sheets("formulaire").Select
Range("prout").Value = ""
Range("D4").Select
Sheets("Clients").Select 'on revient afficher la feuille client
Range("A5").Select 'on séléctione enfin la case A5

End Sub


Bon je vous l'avou, il y a beaucoup de copier coller sur des exemples de macro que j'ai put voir par ci par là...
Il y a sans doute donc des lignes de commandes qui ne servent à rien et d'autre que l'on peux voir autrement.

Le principe de cette macro, est de créer une sorte de base de donné pour un fichier client.
D'une feuille de saisie des coordonées et divers info d'un client, je "clic" sur un bouton de "validation" une fois am saisie terminé, et l'ensemble des données vont alors se mettre sur une autre feuille du fichier, sur une seule ligne, à la suite des autres, puis il y a un "tri" par ordre alphabétique .... Avant ça, les données ont été alignés sur une seule ligne dans ma feuille de saisi pour n'avoir à copier qu'un seul RANGE, celui de la ligne de donnée....

Bon vous arrivez à suivre, encore là ?
Merci donc.

Mes questions sont donc :
- il y a t'il plus simple ?
- Si je veux mettre des conditions dans ma macro, comment faire ?

C'est à dire que, je créer dans le même fichier 3 feuilles identiques de données, mais une pour les PROSPECTS CLIENT, une autre pour les CLIENT ATELIER, et une dernière pour les DEVIS CLIENT.
Et que ma macro, suivant le renseignement du TYPE de client, elle va remplir soit la feuille PROSPECT, soit la feuille ATELIER, soit la feuille DEVIS. (voir 2 ... ou les 3!)

- Poussons le visse plus loin, si je veux faire un fichier avec cette fois si 3 feuilles différentes pour PROSPECT ATELIER et DEVIS, toujours avec le principes de remplissage de lignes de données, comment faire si les lignes ne sont pas les mêmes sur chaques feuilles ? (là ça devient tordue en effet...)

Merci millle fois à vous tous pour votre patience et votre coup de main.
N'hésitez pas à simplement me renvoyer vers des listes de commandes VBA simple, avec explication en français, je devrais me débrouiller ....

A bientôt.
Juju.

1 réponse

us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
15 nov. 2009 à 13:34
Bonjour,

Ton discours est tellement dense, que bon, je vais prendre une présentation peu académique, pour une fois...

Bon je vous l'avou, il y a beaucoup de copier coller sur des exemples de macro que j'ai put voir par ci par là...

Bonne chose à condition de comprendre !

Il y a sans doute donc des lignes de commandes qui ne servent à rien et d'autre que l'on peux voir autrement.

Oui, ben, "les commandes qui ne servent à rien" ?! n'a pas lieu d'être là ! dans une programmation on se doit d'être rigoureux autant que possible... Le point extrêmement négatif, c'est de faire du codage qui sert à rien ! ... j'en conclus que tu ne sais pas trop ce que tu fais alors... Débutant, okay, mais bon, faut comprendre, encore une fois.

Le principe de cette macro, est de créer une sorte de base de donné pour un fichier client.
D'une feuille de saisie des coordonées et divers info d'un client, je "clic" sur un bouton de "validation" une fois am saisie terminé, et l'ensemble des données vont alors se mettre sur une autre feuille du fichier, sur une seule ligne, à la suite des autres, puis il y a un "tri" par ordre alphabétique .... Avant ça, les données ont été alignés sur une seule ligne dans ma feuille de saisi pour n'avoir à copier qu'un seul RANGE, celui de la ligne de donnée....

Bon vous arrivez à suivre, encore là ?
Merci donc.

Non, je n'arrive déjà plus trop à suivre là... "Merci donc." De rien, de rien... en fait tu dis "Merci" seulement si on te comprend, sinon tant pis, et pas de "Merci" pour l'effort fait pour te lire...

Mes questions sont donc :
- il y a t'il plus simple ?

Surement, il y a plus simple... mais si tu veux une optimisation de code, il faudrait qu'il soit un peu près bien structuré et en ressortir que la partie qui est longue... hélas, il faut déjà que tu comprennes ce que le code fait. (et nous aussi)

- Si je veux mettre des conditions dans ma macro, comment faire ?

La base d'une condition, c'est : IF (condition) THEN (instructions)
Tu l'utilises déjà dans ton code, donc c'est une question un peu bizarre. Cette question marque surtout que ton niveau de grand débutant en programmation. Ce n'est pas une critique, mais imagine que tu veux apprendre le chinois mais sans savoir parler ! Difficile... Commence peut-être par un tutoriel d'initiation en programmation... Cette question trouveras naturellement sa réponse ensuite...

C'est à dire que, je créer dans le même fichier 3 feuilles identiques de données, mais une pour les PROSPECTS CLIENT, une autre pour les CLIENT ATELIER, et une dernière pour les DEVIS CLIENT.
Et que ma macro, suivant le renseignement du TYPE de client, elle va remplir soit la feuille PROSPECT, soit la feuille ATELIER, soit la feuille DEVIS. (voir 2 ... ou les 3!)

On ne demande pas un programme tout fait sur CS ! mais un point particulier qui pose problème. Voir le règlement.

- Poussons le visse plus loin, si je veux faire un fichier avec cette fois si 3 feuilles différentes pour PROSPECT ATELIER et DEVIS, toujours avec le principes de remplissage de lignes de données, comment faire si les lignes ne sont pas les mêmes sur chaques feuilles ? (là ça devient tordue en effet...)

Idem.

Merci mille fois à vous tous pour votre patience et votre coup de main.
N'hésitez pas à simplement me renvoyer vers des listes de commandes VBA simple, avec explication en français, je devrais me débrouiller ....

Je te donne comme conseil de lire des tutoriels d'initiation... sinon la liste va être très longue... et impossible à t'expliquer. Reviens ici avec "une seule question à la fois" si une instruction te pose un problème de compréhension... (on apprend pas tout en une seule fois, non plus, tu l'imagines bien...)

Amicalement,
Us.
0
Rejoignez-nous