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 :

[VBA Userform] optimisation macro copie lignes sous critères


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Ingénieur Electronique/Informatique
    Inscrit en
    Février 2015
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Electronique/Informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 1
    Par défaut [VBA Userform] optimisation macro copie lignes sous critères
    Bonjour à tous,

    Je ne sais pas si ce sujet à déjà été abordée auparavant, mais je viens vers vous car je débute depuis peu en VBA et cela fait quelques jours maintenant que j'aimerais pouvoir faire évoluer le code ma macro pour la rendre utilisable facilement mais je ne sais pas trop comment m'y prendre.

    L'idée principale serait en fait de pouvoir remplacer dans mon code existant les dates de début "dtdeb" et de fin "dtfin" d'intervalle définies et codées en dur, afin de pouvoir sélectionner de manière dynamique n'importe quel intervalle de temps dans ma macro. j'ai entendu parler d'un bouton excel permettant de sélectionner facilement un intervalle de dates (du style Microsoft Date And Time picker control...).

    Malheureusement, je ne sais pas comment l'utiliser dans un formulaire VBA et surtout comment adapter et modifier mon code existant en conséquence.

    Peut-être existe-il d'autres moyens plus simple également ???

    D'avance merci pour vos retours,

    Mathieu

    Je vous fais part ci-dessous de mon code actuel :


    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Option Explicit
    Dim Tablo, Ln1, Ln2, Col, Col2
    Dim dtdeb As Date
    Dim dtfin As Date
     
    Sub TabFe()
     
       'Choix des colonnes du tableau à créer dans l'onglet TestTabFe.
       Tablo = Array("B", "D", "F", "G", "H", "L", "M", "N")
     
       Ln1 = 16
       'La ligne n°16 correspond à la 1ère ligne de l'onglet Liste_FNC.
       Ln2 = 2
       'La ligne n°2 correspond à la 1ère ligne de l'onglet TestTabFe.
     
        dtdeb = DateSerial(14, 01, 31)
        dtfin = DateSerial(13, 12, 31)
     
        While Cells(Ln1, 1).Value <> ""
            If Range("B" & Ln1).Value = "KSB" And UCase(Range("AP" & Ln1).Value) = "OUI" And Range("N" & Ln1).Value <= dtdeb And Range("N" & Ln1).Value >= dtfin Then
     
                   Col2 = 0
                   For Each Col In Tablo
                       Sheets("TestTabFe").Cells(Ln2, Col2 + 1).Value = Range(Tablo(Col2) & Ln1).Value
                       Col2 = Col2 + 1
                   Next Col
                   Ln2 = Ln2 + 1
            End If
            Ln1 = Ln1 + 1
        Wend
        Sheets("TestTabFe").Activate
     
        'Bordure Ligne.
        Range("A1").CurrentRegion.Select
        With Selection
            .Borders.LineStyle = xlContinuous
        End With
     
        'Bordure Colonne.
        With Range("A1:H" & Ln2 - 1)
            .Borders(xlEdgeLeft).Weight = xlThin
            .Borders(xlEdgeRight).Weight = xlThin
            .Borders(xlEdgeTop).Weight = xlThin
            .Borders(xlEdgeBottom).Weight = xlThin
            .Borders(xlInsideVertical).Weight = xlThin
        End With
     
    End Sub

  2. #2
    Membre éprouvé
    Homme Profil pro
    Programmeur en temps libre
    Inscrit en
    Février 2015
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Programmeur en temps libre
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 68
    Par défaut
    Bonjour a tous,

    alors effectivement il y a bien un contrôle qui permet d’afficher un calendrier depuis un UserForm. Pour l'importer, il faut cliquer avec le bouton droit dans la boite à outil
    -> contrôles supplémentaires
    ->cocher la case "Microsoft date and Time Picker control 6.0"
    -> Cliquer OK

    Pour ce qui est de l'utilisation d'un UserForm je pense qu'il y a suffisamment de sujets ouverts et de tutoriels pour s'en sortir...

Discussions similaires

  1. Aide pour Macro VBA copie lignes entre 2 classeur
    Par magicsismic dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 30/03/2015, 21h13
  2. [XL-2007] Macro - Copie ligne avec formule et récupération de nom de feuille
    Par klemanet dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 08/06/2012, 17h04
  3. macro copie ligne suivante
    Par John Parker dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 18/04/2011, 10h54
  4. {VBA Excel} Optimiser macro si possible
    Par Thomas69 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/06/2007, 16h06
  5. [VBA-E]sélec./copie lignes remplies vers feuille
    Par Angel79 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 19/01/2006, 15h35

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