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 :

importation de données vers une feuille


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 28
    Par défaut importation de données vers une feuille
    Bonjour,

    Je cherche à adapter du code afin que les lignes qui sont colorées en rouge soient importées vers ma feuille2.

    Voici le code:

    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
    Sub derniere_date_mois()
     
    Dim LastLig As Long, i As Long
     
    LastLig = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 2 To LastLig
     
    DerLig = 2
     
        If Year(Range("A" & i + 1).Value) = Year(Range("A" & i).Value) Then
            If Month(Range("A" & i + 1).Value) > Month(Range("A" & i).Value) Then
                Rows(i).Interior.ColorIndex = 3
                Rows(i).Copy Sheets("Sheet2").Rows(DerLig)
            DerLig = DerLig + 1
     
            End If
        Else
            Rows(i).Interior.ColorIndex = 3
            Rows(i).Copy Sheets("Sheet2").Rows(DerLig)
            DerLig = DerLig + 1
        End If
    Next i
     
     
    End Sub

    Le code pour importer les ligne en rouge vers la feuille2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Rows(i).Copy Sheets("Sheet2").Rows(DerLig)
    n'est pas au point car je n'obtiens que la dernière ligne en rouge ce qui signifie qu'elles sont toutes écrasées successivement par la suivante...

    Comment faire pour que les lignes en rouges soient écrites les unes sous les autres dans ma feuille2?

  2. #2
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Bonjour,
    pour quopi tu teste la date si tu veux tester la couleur?
    Tu as essayé de l'adapter? ou tu attend qu'on le fasse
    pour connaitre la couleur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if Rows(i).Interior.ColorIndex = 3 then 'je en sais pas si 3 est rouge
    ensuite tu agit en conséquenc si c'est vrai tu fai ton copier et tu incrémente ta variable si c'est faux ben tu fai ce que tu veux ou rien

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 28
    Par défaut
    Krovax,

    La macro a pour but de tester en 1er lieu la date.
    Si les conditions de dates sont respectées, alors la ligne doit être colorée en rouge (oui, je confirme, ColorIndex = 3) et cette même ligne doit-être importee dans ma feuille2.

    Oui, c'est moi qui ai adapté le code qui vise à importer vers la feuille2 mais j'ai dû oublier quelquechose car les lignes sont ecrasées successivement par les suivantes et je me retrouve au final avec une seule ligne qui correspond à la dernière ligne importée.

    voici le script d'où provient le code pour importer les lignes vers la feuille2:

    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
    Sub Last_date_of_the_month()
    Dim Lig As Long, DerLig As Long
    Dim M As Byte, MC As Byte
    Dim i As Long
     
        Sheets("Sheet2").Cells.ClearContents
        With Sheets("Sheet1")
            .Cells.Interior.ColorIndex = xlNone
            M = Month(.Cells(2, 2))
            For Lig = 2 To .Range("B65536").End(xlUp).Row
                MC = Month(.Cells(Lig, 2))
     
    If MC > M Or (MC = 1 And M = 12) Then
                    .Rows(Lig - 1).Copy Sheets("Sheet2").Rows(DerLig)
                    DerLig = DerLig + 1
                    .Rows(Lig - 1).Interior.ColorIndex = 3
                    M = MC
     
                End If
            Next Lig
        End With
    End Sub
    Je pensais que permet à la macro de comprendre que les lignes doivent être collées à la suite l'une de l'autre...

    Est ce que c'est cela?

  4. #4
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    re,
    alors la prochane fois que tu as un souci comme ca comment le résoudre seul

    Tu lance la macro en mode pas a pas (la touche F8) et tu regarde l'évolution des tes variable soit avec des espions soit en affichant les variables locals (menue affichage)

    et tu verais que

    DerLig vau toujours 2

    parce que tu as mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 2 To LastLig
     
    DerLig = 2
    En gros a chaque fois que tu change de ligne tu remet derlig a 2 donc ton de
    ne sert absolument a rien

    essaye simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DerLig = 2
    For i = 2 To LastLig

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 28
    Par défaut
    Merci Krovax,

    Je viens d'inverser la position des equations et maintenant c'est bon!

    Je ne savais pas que c'était dû à un soucis de positionnement.

    Encore merci!

  6. #6
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Prochaine fois pense au mode pas a pas surveile tes variables durant l'évolution de ton code.
    Et la pense au bouton

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

Discussions similaires

  1. importation des données vers une BDD Mysql
    Par moabomotal dans le forum Requêtes
    Réponses: 2
    Dernier message: 16/12/2006, 21h03
  2. Importer des données d'une feuille Excel vers TABLE
    Par souminet dans le forum Bases de données
    Réponses: 1
    Dernier message: 07/11/2006, 09h10
  3. Réponses: 2
    Dernier message: 16/10/2006, 11h24
  4. Importer les données d'une feuille EXCEL
    Par codial dans le forum Bases de données
    Réponses: 4
    Dernier message: 05/02/2006, 09h07
  5. [CR]Importer des données d'une feuille excel
    Par rolan dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 17/12/2004, 22h32

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