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 :

Problème de recopie de lignes en vba


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Dirigeant de cabinet de consulting
    Inscrit en
    Avril 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dirigeant de cabinet de consulting
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2017
    Messages : 10
    Par défaut Problème de recopie de lignes en vba
    Bonjour,

    je cherche à recopie sur une feuille les lignes provenant de deux autres feuilles du classeur sous condition qu'elles contiennent deux valeurs communes (nom et date). Voilà le code que j'ai écrit et qui ne marche pas. Merci de m'aider.
    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
     
    Sub essai_doublons()
    'ligat = nombre total de lignes du fichier "Actuel"
    Dim ligat As Long
    ligat = 0
    While Worksheets("Actuel").Cells(ligat + 1, 1) <> ""
    ligat = ligat + 1
    Wend
    'ligin = ligne du fichier "Import",
    'coli = colonne du nom dans "Import"
    Dim coli As Long
    coli = 1
    'colid = colonne de la date d’entrée dans "Import"
    Dim colid As Long
    colid = 2
    'liga = ligne du fichier "Actuel"
    'lcd = ligne courante dans "Doublons"
    Dim ligin As Long, As Long, lcn As Long
    ligin = 1
    lcd = 1
    lcn = 1
    While Worksheets("Import").Cells(ligin, coli) <> ""
        For liga = 1 To ligat
        If Worksheets("Actuel").Cells(liga, 1) = Worksheets("Import").Cells(ligin, coli) And Worksheets("Actuel").Cells(liga, 6) = Worksheets("Import").Cells(ligin, colid) Then
        'recopie des lignes dans doublons et incrément de 2
        Worksheets("Import").Select
        Rows(liga).Select
        Selection.Copy
        Worksheets("Doublons").Select
        Rows(lcd).Insert
        Worksheets("Actuel").Select
        Rows(liga).Select
        Selection.Copy
        Worksheets("Doublons").Select
        Rows(lcd + 1).Insert
        lcd = lcd + 2
        End If
        Next liga
    Wend
     
    End Sub

  2. #2
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,

    tu devras travaillé avec des "tableau" (array) pour la vitesse d’exécution

    mais pour tester,
    1) trier par ordre alpha
    2) tu lis dans une feuille (jusque à vide) et tu cherche dans l'autre feuille (jusque à vide)
    3) tu écris la ou les lignes

    pour les boucles,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    for Boucle1 = FeuilleLireLigneDebut to FeuilleLireLigneFin
       if nom ="" then exit for  ---> on sort, on a fini
     
       for Boucle2 = FeuilleChercheLigneDebut to FeuilleChercheLigneFin
              if nom ="" then exit for  ---> pas trouvé  --> on sort, lire ligne suivante
              if nom = nom then 
     
                     TRAITEMENT
     
                     exit for  ---> trouvé  --> on sort, lire ligne suivante
               end if
       next Boucle2
    next Boucle1
    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  3. #3
    Membre averti
    Homme Profil pro
    Dirigeant de cabinet de consulting
    Inscrit en
    Avril 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dirigeant de cabinet de consulting
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2017
    Messages : 10
    Par défaut Question complémentaire
    Débutant en VBA, je ne suis pas encore très familier avec les tableaux. Mais je vais essayer de voir cela. En revanche, mon problème est que la première ligne ne s'écrit pas dans ma feuille "Doublons" lorsque j'exécute, je n'ai que la deuxième. Y aurait-il une erreur de syntaxe?

  4. #4
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,

    mets ton code...

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  5. #5
    Membre averti
    Homme Profil pro
    Dirigeant de cabinet de consulting
    Inscrit en
    Avril 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dirigeant de cabinet de consulting
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2017
    Messages : 10
    Par défaut avec 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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    Sub essai_doublons()
    'ligat = nombre total de lignes du fichier actuel
    Dim ligat As Long
    ligat = 0
    While Worksheets("Actuel").Cells(ligat + 1, 1) <> ""
    ligat = ligat + 1
    Wend
    'ligin = ligne du fichier import,
    'coli = colonne du nom dans import
    Dim coli As Long
    coli = 1
    'colid = colonne de la date d’entrée dans import
    Dim colid As Long
    colid = 6
    'liga = ligne du fichier actuel
    'lcd = ligne courante dans doublons
    'lcn = ligne courante dans nouveau
    Dim ligin As Long
    'coli As Long, colid As Long,
    Dim lcd As Long, lcn As Long
    ligin = 1
    lcd = 1
    lcn = 1
    While Worksheets("Import").Cells(ligin, coli) <> ""
        For liga = 1 To ligat
        If Worksheets("Actuel").Cells(liga, 1) = Worksheets("Import").Cells(ligin, coli) And Worksheets("Actuel").Cells(liga, 2) = Worksheets("Import").Cells(ligin, colid) Then
        'recopie des lignes dans doublons et incrément de 2
        Worksheets("Import").Select
        Rows(liga).Select
        Selection.Copy
        Worksheets("Doublons").Select
        Rows(3).Paste
        Worksheets("Actuel").Select
        Rows(liga).Select
        Selection.Copy
        Worksheets("Doublons").Select
        Rows(lcd + 1).Insert
        lcd = lcd + 2
        'else couper la ligne et coller dans nouveau et incrément de 1
        lcn = lcn + 1
        End If
        Next liga
        ligin = ligin + 1
    Wend
     
    End Sub

  6. #6
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,

    celui là ...on le connait...c'est celui du début,
    il a un problème de structure (organisation)

    tu peux continuer avec While...Wend, do...loop, ... peu importe,

    mais regarde le "plan" des boucles (plus haut) et surtout comment en sortir : exit While, exit do, ...

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

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

Discussions similaires

  1. [VBA-E] Problème de numérotation de lignes
    Par aramge dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 29/08/2006, 11h06
  2. [VBA-E] Problème de suppression de lignes
    Par coxi77 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 28/07/2006, 14h01
  3. [VBA-E] Problème d'autorisation à certaines lignes
    Par aramge dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 20/07/2006, 13h53
  4. [VBA Excel] Un problème de recopie des données de l'userform
    Par Viper7 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/06/2006, 14h48
  5. [Excel - VBA] Problème de suppression de lignes...
    Par beholder2 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/01/2005, 17h27

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