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 :

Copie cellules si date1<date<date2


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2012
    Messages : 63
    Par défaut Copie cellules si date1<date<date2
    Bonjour à tous,

    je débute en VB et je bloque sur quelque chose qui doit être relativement simple pour les esprits éclairés que vous êtes...
    j'ai eu beau chercher et chercher encore, je n'ai rien trouver approchant ma recherche sur google(il parait que la solution se trouve souvent sur google ) quoique certain reconnaitront peut etre le début du code ; voila :

    pour le boulot, je dois créer une macro simplifiant ma tache, je m'explique :
    j'ai plusieurs choix possible de date pour des prélèvements, que je répertorie en colonne i; et en fonction de la date de début et de la date de fin je voudrais copier//coller certaines cellules afin d'exporter sur une autre feuille les informations essentielles (en l'occurrence un num client, nom, montant etc...). Il me faut donc d'abord sélectionner tous ce qui concerne la date d'échéance (le 05, le 10, le 15, le 20 ou le 25 du mois) en colonne i, puis comparer les dates de début et de fin (colonnes E et F) par rapport à la date du jour (si le 5 du mois tombe un samedi ou un dimanche ça reporte au lundi...etc) :

    En balbutiant j'arrive à :
    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
     
    Sub ech()
     
    Dim Plage As Range
    Dim dateDeb As Date
    Dim dateFin As Date
     
    Set Plage = Application.InputBox("Sélectionnez une plage", "notByMe", Type:=8)
     
    Dim Rechercheplage As String
     
    Rechercheplage = InputBox("Entrer la date d'echeance à rechercher", "...")
    If Rechercheplage = vbNullString Then Exit Sub
    Dim Cellule As Range
    For Each Cellule In Plage
     
    If InStr(1, Cellule.Value, Rechercheplage) > 0 Then
        Range(Cellule.Address).Select
     
        dateDeb = ActiveCell.Offset(0, -4)
        dateFin = ActiveCell.Offset(0, -3)
    If (dateDeb <= Date and  dateFin>=  date) Then
        ActiveCell.Offset(0, -7).Copy Destination:=ActiveCell.Offset(0, 1)
     
        End If
    End If
    Next Cellule
     
    End Sub
    la ligne: ActiveCell.Offset(0, -7).Copy Destination:=ActiveCell.Offset(0, 1) est un exemple de copier//coller qui me permet de savoir si, en fonction des "dateDeb et DateFin", mon code fonctionne... et bien sur non!

    Je pense avoir un probleme de format de date, mais ça doit (très certainement) être un problème parmis tant d'autres...

    un peu d'aide svp
    Merci

  2. #2
    Membre expérimenté Avatar de L'Albatros
    Homme Profil pro
    Chercheur en économie - statistique
    Inscrit en
    Avril 2012
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur en économie - statistique
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2012
    Messages : 150
    Par défaut
    Quel est le message d'erreur que te renvoie Excel ?
    A quelle ligne est-ce-que ça plante ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2012
    Messages : 63
    Par défaut
    Bonjour l'Albatros

    en fait ça fonctionne...
    le problème est que quand dateDeb est, par ex, le 01/07/12 (et donc date est la date du jour...) et bien la copie se fait quand même.
    En revanche avec dateFin cela fonctionne. si datefin est le 31/05/12 la copie ne se fait pas...

    j'avoue ne pas comprendre, d'ou ma question sur le format de date...

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 30
    Par défaut
    Je pense avoir eu à peu près le même problème, et grace aux membres du forum je suis passé par un filtre :
    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
    Option Explicit
     
    Private Sub CommandButton1_Click()
    'Sub Init_LstCpt()
     
        Dim DateDebut As Date
        Dim DateFin As Date
        Dim WS1 As Worksheet
        Dim WS2 As Worksheet
        Dim k As Integer
        Dim Total1 As Double
        Dim Total2 As Double
        Dim Total3 As Double
        Dim Total4 As Double
     
        Set WS1 = ThisWorkbook.Worksheets("Feuil1")
        Set WS2 = ThisWorkbook.Worksheets("Feuil2")
        WS2.Cells.ClearContents
     
          DateDebut = TextBox1     
          DateFin = TextBox2 
     
     
        With WS1
     
            .Cells(1, 1).AutoFilter Field:=2, Criteria1:="<=" & CDec(DateFin), _
                Operator:=xlAnd, Criteria2:=">=" & CDec(DateDebut)
            On Error GoTo 1
            .Cells(1, 1).CurrentRegion.Copy Destination:=WS2.Cells(1, 1)
            On Error GoTo 0
        End With
     
     
     
        With WS2
     
            k = .Cells(.Rows.Count, 1).End(xlUp).Row
            If k < 2 Then
                MsgBox "Aucun resultat"
                GoTo 1
            End If
            Total1 = WorksheetFunction.Sum(.Range(.Cells(2, 3), .Cells(k, 3)))
            Cells(6, 9).Select
        ActiveCell.Value = Total1 / k
            Total2 = WorksheetFunction.Sum(.Range(.Cells(2, 4), .Cells(k, 4)))
            Cells(7, 9).Select
        ActiveCell.Value = Total2 / k
            Total3 = WorksheetFunction.Sum(.Range(.Cells(2, 5), .Cells(k, 5)))
            Cells(8, 9).Select
        ActiveCell.Value = Total3 / k
            Total4 = WorksheetFunction.Sum(.Range(.Cells(2, 6), .Cells(k, 6)))
            Cells(9, 9).Select
        ActiveCell.Value = Total4 / k
        End With
     
    1
        WS1.Cells(1, 1).AutoFilter    
     
    End Sub
    Dans mon cas, je moyennais les cellules de quatres colonnes (une à une)correspondant à l'intervalle de dates renseigné dans les 2 TextBox.

    Je sais pas si ça a bien répondu à ta question, mais ça permet de selectionner un jour précis sur un plage de date.

    A +

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2012
    Messages : 63
    Par défaut
    Bonjour titibou,

    ça répond peut-être à mon problème, mais je ne vois pas trop comment m'y prendre.
    je m'explique :
    je dois gérer près de 2000 lignes (clients), et en colonne E et F j'ai toutes mes dates début et dates fin.
    Je ne peux pas rentrer pour chaque ligne les deux dates dans les textbox, sinon je perdrai plus de temps que je n'en gagnerai...

    Je n'ai peut être pas tout compris

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 30
    Par défaut
    J'ai du mal comprendre... Dans ce cas cela n'est peut être pas le mieux.
    Moi j'ai une colonne avec les dates qui défilent, répétées ou pas, et les données correspondantes dans les colonnes juxtaposées.
    Je pensais que tu voulais Selectionner des jours particuliers, et retrouver les actions commencées ou terminées à ce moment.

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2012
    Messages : 63
    Par défaut
    j'avoue débuter en macro et du coup je fais compliqué au lieu de faire simple

    j'ai en colonne i la date d'échéance définie par "AU 05" ou "AU 10" etc...
    en colonne E et F j'ai la date de prélèvement réelle mais il n'y a que le mois qui me sert (vu que la colonne i définie si c'est au 5 du mois, au 10 du mois etc)

    du coup j'ai besoin de selectionner tous ce qui est "AU 05", et ensuite comparer les mois de début et de fin par rapport au mois en cours pour copier//coller les données dont j'ai besoin pr préparer sur une autre feuille ce que j'envoi à la banque...

    d'ou dans mon ébauche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Set Plage = Application.InputBox("Sélectionnez une plage", "notByMe", Type:=8)
     
    Dim Rechercheplage As String
     
    Rechercheplage = InputBox("Entrer la date d'echeance à rechercher", "...")
    If Rechercheplage = vbNullString Then Exit Sub
    Dim Cellule As Range
    For Each Cellule In Plage
     
    If InStr(1, Cellule.Value, Rechercheplage) > 0 Then
        Range(Cellule.Address).Select
    afin de trouver tous ce qui est "AU 05" en colonne i (via l'inputbox)
    et c'est au moment de comparer les mois (en E et F) que j'ai un problème...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Excel 2003]Copie Cellules fichier A vers cellules fichier B
    Par jbulysse dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/08/2010, 10h57
  2. cellules se reférant aux dates
    Par samia08 dans le forum Excel
    Réponses: 10
    Dernier message: 31/03/2010, 16h36
  3. Recherche valeur et copie cellule
    Par stephblit dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/06/2008, 20h43
  4. copié cellule d'une feuille
    Par tony847 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/01/2008, 23h44
  5. macro simple de copie cellule
    Par icecream33 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/07/2006, 12h06

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