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 :

Si la date est comprise entre 01/01/13 et 01/07/2013 alors deplacer la ligne correspondante vers sheet2


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    hotellier
    Inscrit en
    Février 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Indonésie

    Informations professionnelles :
    Activité : hotellier
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Février 2013
    Messages : 5
    Par défaut Si la date est comprise entre 01/01/13 et 01/07/2013 alors deplacer la ligne correspondante vers sheet2
    Bonjour,

    Nous travaillons a automatiser le traitement de nos donnes excel grace a une macro. Ne sachant pas rediger une macro, nous vous presentons ci dessous notre probleme, esperant votre assistance

    RESULTAT SOUHAITE:

    Mes data sont dans sheet1
    Chacune de mes lignes contient:
    dans la colonne B le nom du client
    dans la colonne G la date darrivee
    dans la colonne H la date de depart
    dans la colonne J le prix de vente
    dans la colonne K la quantite

    Nous essayons de creer une macro permettant d'automatiser le calcul des donnees suivantes:

    1. le total prix de vente (colonne J) par client et par semaine :

    semaine 1 : du 1er au 7, le client "aaa" a un total vente : "x"

    semaine 2 : du 8 au 15, le client "aaa" a un total vente : "y"

    etc.

    semaine 1 : du 1er au 7, le client "bbb" a un total vente : "z"

    etc.

    2. le total quantite (colonne K) par client et par semaine (meme schema que ci dessus)

    Ces VALEURS (1.total prix et 2.total quantite) SERAIT REPORTEes vers une sheet nommee TOTAL.

    Mon idee etait dutiliser une macro ayant la fonction decrite ci dessous, puis avoir une simple fonction total (SUM) dans chacune de ces sheet, reportant tout ces totaux vers une Sheet nomee TOTAL.

    Description des fonctions de la macro:

    Dans sheet1, Si la colonne B contient le mot "aaa" et la date dans la colonne J est comprise entre 01/01/13 et 01/07/2013 (premiere semaine) alors couper et deplacer la ligne correspondante vers sheet2.

    Dans sheet1, Si la colonne B contient le mot "aaa" et la date dans la colonne J est comprise entre 01/08/13 et 01/15/2013 (seconde semaine) alors couper et deplacer la ligne correspondante vers sheet3.

    Dans sheet1, Si la colonne B contient le mot "aaa" et la date dans la colonne J est comprise entre 01/16/13 et 01/23/2013 (troisieme semaine) alors couper et deplacer la ligne correspondante vers sheet2.

    Dans sheet1, Si la colonne B contient le mot "aaa" et la date dans la colonne J est comprise entre 01/24/13 et 01/31/2013 (quatrieme semaine) alors couper et deplacer la ligne correspondante vers sheet5.

    Dans sheet1, Si la colonne B contient le mot "bbb" et la date dans la colonne J est comprise entre 01/01/13 et 01/07/2013 (premiere semaine) alors couper et deplacer la ligne correspondante vers sheet6.

    ainsi de suite pour chaque mot clef.


    PUIS dans chaque sheet jai le total des deux donnes (1.prix de vente et 2.quantite) :
    sheet2 sur ligne 1000 colonne J (prix de vente) jai :
    .
    De meme pour la colonne K (quantite)

    PUIS dans sheet TOTAL jai un tableau avec les donnees cumulees:
    Ligne client "aaa" -- Colonne Semaine 1 Ligne client "aaa" -- Colonne Semaine 2 Ligne client "bbb"

    Etc.

    Repertoriant ainsi toute mes donnees par client et par semaine.

    Jai une quinzaine de mots clefs, dont les informations contenues dans les lignes correspondantes sont a classer par semaine.

    Je pensais donc faire un fichier excel par mois, mais quinze mots clefs multiplies par quatres semaines , representent 60 sheet.. est ce gerable? ou vaut il mieux classer les semaines dans une meme sheet:

    mot clef aaa semaine 1 copier vers sheet2 ligne 2
    mot clef aaa semaine 2 copier vers sheet2 ligne 1000
    mot clef aaa semaine 3 copier vers sheet2 ligne 2000
    mot clef aaa semaine 4 copier vers sheet2 ligne 4000

    est ce mieux? cela limite le nombre de sheet a 15 au lieu de 60...

    Lun des membres de votre Forum nous a genereusement assiste en creant la macro cidessous, permettant de classer nos donnees par client (macro que nous aurions ete incapable decrire, et qui marche parfaitement)

    Nous essayons maintenant de rajouter a cette macro le classement des donnees par semaine:

    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
    Sub CutData()
    Dim MotCle
    Dim i As Byte
    Dim C As Range
    Dim F As String
    Dim Ligne As Long
        'On définit les mots clés
        MotCle = Array("aaa", "bbb", "ccc")
        'On effectue la recherche de chaque mot clé dans la colonne F de la sheet1
        For i = 0 To UBound(MotCle)
            Do
                Set C = Worksheets("sheet1").Columns(2).Find(MotCle(i), LookIn:=xlValues, lookat:=xlPart)
                'Si le mot clé est trouvé
                If Not C Is Nothing Then
                    'On définit le nom de la feuille où sera effectuée la copie
                    F = "sheet" & (i + 2)
                    With Worksheets(F)
                        'On définit la ligne où sera effectué le collage
                        Ligne = .Range("B" & Rows.Count).End(xlUp).Row + 1
                        'On effectue le copier / coller
                        C.EntireRow.Copy .Range("A" & Ligne)
                        'On supprime la ligne dans la sheet1
                        C.EntireRow.Delete
                    End With
                End If
            Loop While Not C Is Nothing
        Next i
    End Sub
    Ah oui, les dates utilisent le systeme americain, MM/JJ/YYYY, je ne sais pas si ca fait une difference..!

    Merci davance pour votre agreable assistance!

    Elie

  2. #2
    Membre à l'essai
    Homme Profil pro
    hotellier
    Inscrit en
    Février 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Indonésie

    Informations professionnelles :
    Activité : hotellier
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Février 2013
    Messages : 5
    Par défaut si la date est egale a une date situee dans colonne A et si le
    Bonjour,

    Jessaie de trouver une solution a lautomatisation du classement de donnees, classement base sur deux criteres de recherche:

    Critere 1:
    la date de depart dans la colonne H sheet1

    Critere 2:
    le nom du client dans la colonne B sheet1


    RESULTAT ESPERE:

    Je cree une sheet dates de references (sheetDate) dans laquelle la colonne A contient les dates de la premiere semaine, colonne B les dates de la seconde semaine, ainsi de suite pour les quatres semaines du mois.

    Si la date presente dans la colonne H sheet1 est egale a une des dates de la colonne A sheetDate ET la nom du client (Colonne B sheet1) est egal a "aaa" ALORS couper la ligne correspondante et la copier vers sheet2


    Si la date presente dans la colonne H sheet1 est egale a une des dates de la colonne B sheetDate ET la nom du client (Colonne B sheet1) est egal a "aaa" ALORS couper la ligne correspondante et la copier vers sheet3

    Si la date presente dans la colonne H sheet1 est egale a une des dates de la colonne C sheetDate ET la nom du client (Colonne B sheet1) est egal a "aaa" ALORS couper la ligne correspondante et la copier vers sheet4

    Si la date presente dans la colonne H sheet1 est egale a une des dates de la colonne D sheetDate ET la nom du client (Colonne B sheet1) est egal a "aaa" ALORS couper la ligne correspondante et la copier vers sheet5

    Si la date presente dans la colonne H sheet1 est egale a une des dates de la colonne A sheetDate ET la nom du client (Colonne B sheet1) est egal a "bbb" ALORS couper la ligne correspondante et la copier vers sheet4

    etc.


    Le code ci dessous permet de classer les donnees selon le critere 2. Serait il possible de rajouter le critere 1 a la macro? Si vous le voulez bien ce serait tres apprecie!

    Merci.


    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
    Sub CutData()
    Dim MotCle
    Dim i As Byte
    Dim C As Range
    Dim F As String
    Dim Ligne As Long
        'On définit les mots clés
        MotCle = Array("aaa", "bbb", "ccc")
        'On effectue la recherche de chaque mot clé dans la colonne F de la sheet1
        For i = 0 To UBound(MotCle)
            Do
                Set C = Worksheets("sheet1").Columns(2).Find(MotCle(i), LookIn:=xlValues, lookat:=xlPart)
                'Si le mot clé est trouvé
                If Not C Is Nothing Then
                    'On définit le nom de la feuille où sera effectuée la copie
                    F = "sheet" & (i + 2)
                    With Worksheets(F)
                        'On définit la ligne où sera effectué le collage
                        Ligne = .Range("B" & Rows.Count).End(xlUp).Row + 1
                        'On effectue le copier / coller
                        C.EntireRow.Copy .Range("A" & Ligne)
                        'On supprime la ligne dans la sheet1
                        C.EntireRow.Delete
                    End With
                End If
            Loop While Not C Is Nothing
        Next i
    End Sub
    Ah oui, les dates utilisent le systeme americain, MM/JJ/YYYY, je ne sais pas si ca fait une difference..!

    Merci davance pour votre agreable assistance!

    Elie

Discussions similaires

  1. Savoir qu'une date est comprise entre deux autres
    Par NicoD. dans le forum Langage
    Réponses: 2
    Dernier message: 17/01/2011, 11h16
  2. Requete pour voir si une date est comprise entre 2 date
    Par afrodje dans le forum Langage SQL
    Réponses: 1
    Dernier message: 15/11/2008, 16h43
  3. Réponses: 4
    Dernier message: 12/11/2008, 18h21
  4. Réponses: 4
    Dernier message: 26/08/2008, 18h11
  5. Réponses: 2
    Dernier message: 17/03/2008, 19h20

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