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 Excel 2003 Copier ligne sous plusieurs conditions


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 8
    Points : 3
    Points
    3
    Par défaut VBA Excel 2003 Copier ligne sous plusieurs conditions
    Bonjour,

    J'ai des listes de données sur une feuille que j'aimerai pouvoir copier sur une autre feuille sous deux critères que l'utilisateur définirait sur demande (via application.inputbox ??)

    Le premier critère est une date
    Le deuxième critère est une valeur déjà définie dans une useform.

    Je n'arrive pas à faire la sélection par date.

    Quelqu'un a des pistes?

    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour Harreauv

    Puisque c'est une date et que la saisie se fait via inputbox, il faut transformer la valeur retournée via la fonction CDate()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    LaDate = InputBox("Saisissez une date")
    If LaDate <>"" then LaDate = CDate(LaDate)
    A+

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup!!

    Ya plus qu'à faire le lien avec les bonnes données!


  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    En revanche la recherche en utilisant la date ne fonctionne pas...
    Une idée?

    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    Sub Choix_date()
     
    On Error Resume Next
     
    ' sélection des données en fonction de la date
     
    Dim A As Single
    Dim B As String
    Dim K As Worksheet
    Dim L As Worksheet
    Dim M As Range
    Dim FirstFound2 As String
    Dim Plg1 As Range
    Dim Plg2 As Range
    Dim EcartNeg As Integer
     
     
    A = InputBox("Date d'enregistrement?", "Choix Date") 'quelle date choisir
     
    If A <> "" Then A = CDate(A)
     
     
     
     
     
     
    Set K = Worksheets("Mafeuille")                          ' On travaille sur la feuille Mafeuille chèques
    Set Plg1 = K.Range(K.Cells(1, 1), K.Cells(1000, 1))
     
    With Plg1
     
        Set M = .Find(A, LookIn:=xlValues, LookAt:=xlPart)
            If Not (M Is Nothing) Then
                FirstFound2 = M.Address
                Do
                    M.Offset(0, 15).Value = "OK !"
                    Set M = .FindNext(M)
                Loop While M.Address <> FirstFound2
     
            Else
                MsgBox "Cette date n'est pas répertorié", vbOKOnly, "Mafeuille"
     
            End If
     
    End With
    Dim shtoto As Worksheet                             'création de la feuille temporaire pour les données sélectionnées selon la date
     
        Set shname = Sheets.Add(After:=Sheets(Sheets.Count))
     
    Application.DisplayAlerts = False
     
    For Each X In Sheets
    If X.Name = A Then X.Delete
    Next
    Application.DisplayAlerts = True
     
        shname.Name = "Date_" + A 
    Dim iLI As Long
     
        Dim iRE As Long
        Dim iRA As Long
     
        Dim iLO As Long
     
        Dim LI As Worksheet
        Dim LO As Worksheet
        Dim RE As Worksheet
        Dim RA As Worksheet
     
     
        Set LI = Worksheets("Mafeuille")
        Set RE = Worksheets("Date_" + A)
     
     
     
     
        iRE = 3
        iRA = 3
     
     
        For iLI = 2 To 1000
     
            If LI.Cells(iLI, 17).Text = "OK !" Then
     
                LI.Range(iLI & ":" & iLI).Copy RE.Cells(iRE, 1)
     
                iRE = iRE + 1
     
            End If
     
         Next
     
     
        For iLO = 2 To 1000
            If LO.Cells(iLO, 17).Text = "OK !" Then
     
                LO.Range(iLO & ":" & iLO).Copy RA.Cells(iRA, 1)
     
                iRA = iRA + 1
            End If
     
     
    Next
    End sub

  5. #5
    Invité
    Invité(e)
    Par défaut
    Re,

    Sans fichier, ça va être difficile je ne sais pas comment sont tes données

    A+

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Bien vu

    Le fichier en PJ
    Fichiers attachés Fichiers attachés

  7. #7
    Invité
    Invité(e)
    Par défaut
    Re,

    Voici ton fichier avec le code légèrement optimisé

    Je te conseille :
    - l'utilisation de Option Explicit en début de module
    - la déclaration de tes variables en début de Sub
    - un nom explicite pour tes variables, permet de mieux s'y retrouver

    A+
    Fichiers attachés Fichiers attachés

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Merci Beaucoup pour ces corrections!

    J'ai une erreur cependant au niveau du changement de nom
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShName.Name = ("Date " + MaDate)
    Erreur d'execution ' 13': Incompatibilité de Type.
    Tu as une idée?

    Merci

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour Harreauv

    Oups, Excel n'accepte pas des noms d'onglet avec "/"
    il faut donc transformer la date en valeur texte avec des points (par exemple)

    Au début de la sub
    Ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sDate = Format(MaDate, "dd.mm.yyyy")
    Il faut alors utiliser sDate comme variable et nom MaDate

    A+

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Merci, la date passe maintenant!!

    En revanche, si je lance deux fois la recherche, avec la même date, il me remet une erreur au même endroit (apparemment la suppression de la feuille du même nom ne fonctionne pas.
    Tu as une idée?

    Deuxième point, j'ai beau tapé une date qui existe, il me sort rien du tout sur le nouvel onglet créé.

    Des idées??

    Merci pour ton aide!

Discussions similaires

  1. Suprimer lignes vides avec VBA Excel 2003
    Par Lufia dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 17/11/2008, 21h27
  2. date time picker VBA EXCEL 2003 sous vista
    Par andeluc dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 30/04/2008, 18h14
  3. Réponses: 2
    Dernier message: 17/07/2007, 11h53
  4. {VBA Excel}Ouvrir copier et fermer plusieurs fichiers excel
    Par Thomas69 dans le forum Macros et VBA Excel
    Réponses: 25
    Dernier message: 26/06/2007, 09h52
  5. Réponses: 6
    Dernier message: 20/09/2006, 14h07

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