Création d'une macro "validation" sous excel

gams64

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

Excel-lent

XLDnaute Barbatruc
Re : Création d'une macro "validation" sous excel

Bonjour et bienvenu sur le forum Gams64,

Toutes les solutions que tu demandes sont réalisable!

Choisi celle que tu préfères, prépare ton fichier excel dans ce sens, met le sur le forum et nous pourrons ainsi te conseiller plus précisement, corriger tes éventuelles erreurs et remplir les trous

A te lire

Cordialement
 

gams64

XLDnaute Nouveau
Re : Création d'une macro "validation" sous excel

En réalité il est déjà fait le fichier en question, il ne me manque que la macro...

Je vous le met donc en ligne ici, mais sans aucune macro.

Il est à noté que dans ce fichier actuel, il y a les mêmes feuilles pour les 3 parties PROSPECTS, DEVIS, et ATELIER. Mon souhait est au final d'avoir d'un coté les infos prospects, de l'autre les infos devis, etc .... Eviter ainsi les doublons...

Mais je crainds ne pas avoir assez de notion informatique pour le moment pour envisager toutes ces bascules.

Merci pour votre coup de main en tout cas !!
 

Pièces jointes

  • FICHIER GENERAL DELTA 2010 FINI.xlsm
    26.3 KB · Affichages: 93

Excel-lent

XLDnaute Barbatruc
Re : Création d'une macro "validation" sous excel

Bonjour Gams64, le fil,

Tu es sur le forum Excel, section 'normal' (et non pas sur la section '2007'). Ici, la plupart n'ont pas Excel 2007 (moi le premier - par choix)!

Ta question était d'ordre général et non spécifique à Excel 2007. Je te propose donc de mettre ton fichier ici mais au format excel 98-2003. Qu'on puisse l'ouvrir et ainsi t'aider!

Gams64 à dit:
Eviter ainsi les doublons...
Je ne vois pas en quoi mettre les prospects d'un côté (sur une feuille), les devis d'un autre côté (sur une autre feuille), ... va te permettre d'éviter les doublons!

Puisque tu as opté pour la solution une feuille de données par type : Prospect, Devis, Atelier. Autant en profiter pour personnaliser chaque feuille! Car je suppose que pour chaque type tu n'as pas forcément besoin des même données.

Dans l'attente de ton nouveau fichier

Cordialement

PS. : n'oublie pas de dire bonjour au début de chacun de tes posts ;)
 

Excel-lent

XLDnaute Barbatruc
Re : Création d'une macro "validation" sous excel

Hello Gams64,

gams64 à dit:
je crainds ne pas avoir assez de notion informatique pour le moment pour envisager toutes ces bascules

Tu verras c'est réalisable!

Solution la plus simple et facile à comprendre :
-> une bouton par type de données : Prospect, Devis, Atelier.
-> une macro par bouton

Et le tour est joué!

Puis lorsque tu maîtriseras mieux le VBA, tu pourras améliorer les choses!

Bonne après midi
 

gams64

XLDnaute Nouveau
Re : Création d'une macro "validation" sous excel

Re bonjour à toi et à tous les autres aussi !!

En effet .... le coup de plusieurs boutons est tout ce qu'il y a de plus simple ... Il suffisait d'y penser peut être lol !!

Merci beaucoup en tout cas pour tes réponses.
Je dois partir en WE, mais je ne manquerais pas de revenir plein d'autres questions pour justement améliorer mes notions en VBA par exemple !!

Merci et bon we a++.
Juju.
 

gams64

XLDnaute Nouveau
Re : Création d'une macro "validation" sous excel

Bonjour tous le monde !!

tous le monde à passé un bon we ?
Moi j'ai réfléchi rapidement à mon problème, et j'ai voulu vous mettre en pièce jointe le fichier suivant mes envies, et surtout au format excel 98-2003, le soucis c'est que du coup le fichier est plus gros en capacité que le maximum que le forum accepte en partage ... Sniff ...

Je vais réessayer plus tard.

Ce qui serait bien, ce serait de me filer quelques infos sur les commandes vba les plus simple à utiliser pour que je créais les macros tout seul, et vous me corrigerai apres, non?

Je crois que l'option de 3 boutons est très bien, il suffit maintenant de faire une macro par feuille, c'est bien ça ?

Merci encore pour vos coups de mains !!
a++

Julien.
 

jp14

XLDnaute Barbatruc
Re : Création d'une macro "validation" sous excel

Bonsoir

Ci joint un exemple de procédure pour remplir une feuille.
La macro recherche dans la feuille que l'on doit remplir la colonne qui contient l'intitulé de la donnée, on écrit alors la valeur inscrite dans la cellule adjacente au nom.
J'ai utilisé uniquement la colonne C il faut faire de même avec la colonne J.
Les cellules fusionnées peuvent poser problèmes.

Code:
Sub inscrire()
' pour boucler sur la colonne 1
Dim cellule As Range
Dim cellule2 As Range
Dim plage As Range
Dim nomfeuille1 As String
Dim col1 As String
Dim lidep1 As Long
Dim dl1 As Long
Dim nomfeuille2 As String
Dim dc1 As Long
Dim plage2 As Range

nomfeuille2 = "Atelier"
nomfeuille1 = "Saisie"
col1 = "c"
lidep1 = 4
With Sheets(nomfeuille1)
dl1 = Sheets(nomfeuille1).Range(col1 & "65536").End(xlUp).Row + 2
Set plage = .Range(col1 & lidep1 & ":" & col1 & .Range(col1 & "65536").End(xlUp).Row)
End With
With Sheets(nomfeuille2)
dl1 = .Range("a65536").End(xlUp).Row + 1
Set plage2 = Sheets(nomfeuille2).Range("a3:bb3")
For Each cellule In plage
     If cellule.Value <> "" Then
     ' on recherche dans la feuille de destination la colonne correpondant à la donnée
        For Each cellule2 In plage2
            If cellule2.MergeArea(1).Value = cellule.Value Then
                .Cells(dl1, cellule2.Column) = cellule.Offset(0, 1).Value
                Exit For
            End If
        Next cellule2
     End If
Next cellule
End With
End Sub
Une modification du dessin des feuilles n'entraine pas une modification de la macro sauf pour la feuille de saisie.
a tester

JP
 

Discussions similaires

Réponses
16
Affichages
545

Statistiques des forums

Discussions
314 422
Messages
2 109 447
Membres
110 482
dernier inscrit
ilyxxxh