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 :

Copier des lignes selon critères vers un tableau similaire autre feuille


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
    Analyste d'exploitation
    Inscrit en
    Octobre 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1
    Par défaut Copier des lignes selon critères vers un tableau similaire autre feuille
    Bonjour, à toutes et à tous

    j'ai une base de données Incidents technique signalé par tierce comme montrer dans mon fichier ci-joint

    je doit faire un filtre automatique qui filtre les donnée "En Cours" et "Clôturé" et laisser Afficher que les Incidents "En Cours"

    (VBA Excel)

    les données "Clôturé" doivent être copié systématiquement de la feuille "Incidents" vers la feuille "Archive" qui contienne un tableau similaire au fur et à mesure ou l'incident est "Clôturé"

    merci de votre aide


    et j'ai un petit souci dans mon code vba :

    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
    49
    50
    Private Sub Worksheet_Change(ByVal target As Range)
    If target <> "" And target.Column = 10 Then Call copie(target): Exit Sub
    Set isct = Intersect(target, Range("E:E"))
    If Not isct Is Nothing Then Call madate(isct)
     
    End Sub
    Sub copie(valeur)
    Application.EnableEvents = False
    If valeur <> "" And valeur.Column = 10 Then
    With valeur.Parent.ListObjects("BASE_INCIDENTS")
    Set zone = .ListRows(valeur.Row - .HeaderRowRange.Row).Range
    End With
    With Sheets("Archive").ListObjects("Archive")
    Set l = .ListRows.Add
    zone.Copy l.Range
    End With
    zone.Delete
    End If
    Application.EnableEvents = True
    End Sub
     
    Sub madate(isct)
     
    Application.EnableEvents = False
    For Each d In isct.Cells
    If IsEmpty(d) Then
    d.Offset(0, -3) = ""
    Else
    d.Offset(0, -3) = Format(Now, "mm/dd/yy")
    End If
    Next
    For Each h In isct.Cells
    If IsEmpty(h) Then
    h.Offset(0, -2) = ""
    Else
    h.Offset(0, -2) = Format(Now, "hh:mm:ss")
    End If
    Next
    Application.EnableEvents = True
    End Sub
     
    Private Sub Workbook_Sheetchange(ByVal Sh As Object, ByVal target As Range)
     
    ActiveWorkbook.Save
     
    End Sub
     
    Function LastAuthor()
    LastAuthor = ActiveWorkbook.BuiltinDocumentProperties("Last Author")
    End Function
    Nom : bug-vba.PNG
Affichages : 333
Taille : 19,3 Ko
    Nom : bug-vba.PNG
Affichages : 333
Taille : 19,3 KoClasseur_Incidents.xlsm

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 446
    Par défaut
    Bonjour,

    Une façon de faire agissant sur clic de boutons:
    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
    Option Explicit
     
    Sub ArchiverClotures()      '--- archiver incidents marqués "clôturés"
        Dim loBase As ListObject, loArch As ListObject, rBase As Range
        Set loBase = ActiveSheet.ListObjects("BASE_INCIDENTS")
        Set loArch = Worksheets("Archive").ListObjects("Archive")
        loBase.Range.AutoFilter Field:=14, Criteria1:="Clôturé"
        If loBase.Range.SpecialCells(xlCellTypeVisible).Rows.Count = 1 Then
            '--- aucun incident clôturé à archiver --- passer
        Else
            '--- copier-coller incidents clôturés
            loBase.DataBodyRange.SpecialCells(xlCellTypeVisible).Cut
            Sheets("Archive").Select
            loArch.DataBodyRange(loArch.ListRows.Count, 1).Offset(1, 0).Select
            ActiveSheet.Paste
            '--- supprimer lignes incidents clôturés archivés
            Sheets("Incident").Select
            Range("BASE_INCIDENTS[Num-Auto]").Select
            Selection.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
        End If
        loBase.Range.AutoFilter '--- réafficher tout
        Range("A8").Select
        Set loBase = Nothing
        Set loArch = Nothing
    End Sub
     
    Sub AjoutIncident()
        Dim loBase As ListObject
        Set loBase = ActiveSheet.ListObjects("BASE_INCIDENTS")
        loBase.ListRows.Add
        loBase.DataBodyRange.Cells(loBase.ListRows.Count, 1).Select
        '--- enregistre code dernier incident en A1
        '--- nécessaire pour incrémenter l'incident suivant, le dernier étant peut-être déjà archivé
        Range("A1") = Format(CLng(Left(Range("A1"), 6)) + 1, "000000") & Right(Range("A1"), 5)
        '--- préremplissage
        ActiveCell = Range("A1")
        ActiveCell.Offset(0, 1) = Date
        ActiveCell.Offset(0, 2) = Format(Now, "hh:nn:ss")
        ActiveCell.Offset(0, 3) = ActiveWorkbook.BuiltinDocumentProperties("Last Author")
        ActiveCell.Offset(0, 4).Select
        Set loBase = Nothing
    End Sub
    Cordialement.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. copier des lignes selon deux conditions
    Par ghatfan99 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 06/10/2011, 11h58
  2. [XL-2003] supprimer des lignes selon critères
    Par collinchris dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/01/2010, 14h51
  3. [E-03] Macro Extraire des Lignes selon critère
    Par willybass dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 26/03/2009, 08h33
  4. Pb pour copier des lignes avec critères
    Par vally74 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/05/2008, 12h20
  5. copier des lignes selon condition
    Par malek1913 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/02/2008, 17h45

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