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.
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.