IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Création de macro "validation" sous Excel


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Création de macro "validation" sous Excel
    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é :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    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.

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut une idée toute simple
    bonjour

    puisque ton souci est de repeter la meme operation sur plusieur feuille finalement
    une solution simple est d'utilisé 3 checkbox corespondant a tes trois feuilles


    et au debut de ta sub tu declare les trois possibilité exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    dim feuilselectionnée AS VARIANT
     
    if checkbox1=true then 
    feuilselectionnée="PROSPECTS CLIENT"
     
    elseif checkbox2=true then feuilselectionnée="devisclient"
    eect....
    end if
    voila une piste
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Simplifier d'abord le code et après tu explicitera la donnée qui va informer sur la feuille où copier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Validation_pavois()
    Dim NouvLig As Long
    With Sheets("Clients")
        NouvLig = .Cells(.Column(1).Cells.Count,1).End(xlUp).Row + 1
        .Rows(NouvLig).Value = Sheets("formulaire").Rows(2).Value
        .Range("K" & NouvLig).NumberFormat = "[$-40C]d-mmm-yy;@"
        .Range("A5:BB" & NouvLig).Sort Key1:=.Range("K5"), Order1:=xlAscending, Header:=xlNo
    End With
    Sheets("formulaire").Range("prout").ClearContents
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/10/2007, 13h49
  2. Une macro synthese en VBA sous excel!
    Par max2245 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 27/12/2005, 20h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo