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 :

macro copier coller avec condition ne marche pas [XL-2000]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 20
    Points : 14
    Points
    14
    Par défaut macro copier coller avec condition ne marche pas
    Bonjour, je suis en train de creer une macro basique de copier coller de lignes d'une feuille à une autre avec condition que voici :
    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
    Sub copypast()
    Sub copypast()
     
     
      Dim i As Integer
      Dim j As Integer
     
      Sheets("Suivi des evols").Activate ' feuille de destination
     
      For i = 3 To 1000
        Sheets("MCO").Select
     
        If Cells(i, 3) = "Evolutif" Then
          Cells(i, i).EntireRow.Copy
          Sheets("Suivi des evols").Select
     
               For j = 3 To 1000
                    If Cells(j, 1) = Empty Then
                       ActiveSheet.Paste
     
                    Else: j = j + 1
     
                    End If
     
               Next j
     
        End If
     
      Next i
     
    End Sub
     
    End Sub
    il semble que la ligne selection.paste pose probleme pouvez vous m'aider

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonjour,
    Pour copier les lignes où en C "Evolutif" à la fin de la plage de donnée de la feuille "Suivi des evols"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub copypast()
    Dim i As Long
    With Sheets("MCO")
        For i = 3 To .Cells(Rows.Count, "C").End(xlUp).Row
            If .Cells(i, "C") = "Evolutif" Then .Rows(i).Copy Sheets("Suivi des evols").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
        Next i
    End With
    End Sub

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 20
    Points : 14
    Points
    14
    Par défaut presque
    bonjour,
    tout d'abord merci pour cette réponse

    malheureusement il manque un tout petit detail a cette macro, effectivement, elle va bioen chercher les lignes contenant le bon champ mais elle copie toujours ces lignes sur la ligne 3 de ma seconde feuille, chaque occurence faisant disparaitre la précédente, il faudrait que le copier se fasse sur la ligne d'en dessous afin de conserver la totalité de mes lignes filtrées.
    j'ai essaye de rajouter un if ligne = empty then i+1 sur feuille 2, mais je ne suis pas assez doué,

    merci pour votre aide

    Cordialement

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    ça vient peut être de la version d'excel qui n'aime pas le .offset (peut être).
    ci-joint code modifié (à tester)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub copypast()
    Dim i As Long
    With Sheets("Suivi des evols")
        For i = 3 To Sheets("MCO").Cells(Rows.Count, "C").End(xlUp).Row
            If Sheets("MCO").Cells(i, "C") = "Evolutif" Then Sheets("MCO").Rows(i).Copy .Cells(.Cells(Rows.Count, "A").End(xlUp).Row + 1, "A")
        Next i
    End With
    End Sub

  5. #5
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    a priori le probleme n'est pas la,
    ne doit on pas forcement mettre un compteur sur la feuille "suivi des evols" pour dire a la macro de passer à la ligne suivante une fois une ligne copiées afin qu'elle ne copie pas toujours sur la meme ligne
    j'ai fait ainsi mais ca ne marche pas encore:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub copypast()
    Dim i As Long
    Dim j As Integer
    With Sheets("MCO")
        For i = 3 To .Cells(Rows.Count, "C").End(xlUp).Row
        If Worksheets("Suivi des evols").Rows(j:j) = Empty Then
        If .Cells(i, "C") = "Evolutif" Then .Rows(i).Copy Sheets("Suivi des evols").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
            j = j + 1
            End If
            Next i
        End With
    End Sub
    il doit y avoir des problemes dans le code je suppose

    euh je l'ai fait avec la nouvelle version que tu m'as envoyé égalerment et le resultat est le meme,

  6. #6
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Pourtant je viens de tester et ça fonctionne

  7. #7
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    das ce ca je te remercie pour ton aide, je vais essayer de trouver une autre solution, :)

    Cordialement

  8. #8
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Pour aider, ci-joint fichier test

  9. #9
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    eh bien ca ne marche pas lol, j'ai ouvert ce fichier excel , le bouton ne marchait pas et le lancement en manuel de la macro ne donnai rien, lol
    ayant excel 2000 peut etre que le probleme est la.

    en tout ca

  10. #10
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    en tout cas j'ai trouvé une autre solution que voici :
    "
    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
    Sub Maj()
     
     
      Dim i As Integer
      Dim j As Integer
      Dim fin As Integer
      Dim pointe As Boolean
     
      ' suppression des lignes de l'onglet de destination
      x = 3
     Worksheets("Suivi des evols").Select
     Do
        Cells(x, 3).Select
        If Cells(x, 2) <> "" Then
        Rows(x).Select
        Selection.Delete
        End If
        Loop Until Cells(x, 2) = ""
     
      'comptage des lignes de l'onglet source
      Worksheets("MCO").Select
      i = 3
      pointe = False
      Do
            Cells(i, 3).Select
            If Cells(i, 3).Value = "" Then pointe = True
            i = i + 1
      Loop Until pointe      
      fin = i - 1
     
      'copie des lignes du fichier source vers le fichier de destination
      Worksheets("Suivi des evols").Activate
      j = 3
      For i = 3 To fin
        Worksheets("MCO").Select
        If Cells(i, 3) = "Evolutif" Then
          Rows(i).Select
          Selection.Copy
          Worksheets("Suivi des evols").Select
            Cells(j, 1).Select
            Selection.Insert
            j = j + 1
        End If
      Next i
     
     
     
    End Sub
    ca a la'air de marcher.

    encore merci pour votre aide et le temps passé

    Cordialement

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

Discussions similaires

  1. [XL-2003] Macro Copier Coller Avec CheckBox et Conditions
    Par HoLbOrN dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 15/11/2017, 13h09
  2. [XL-2013] Macro copier/coller avec condition
    Par comandototo dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/01/2015, 12h35
  3. Macro- Copier-coller avec conditions
    Par touchard.mathieu dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 15/02/2014, 17h17
  4. [XL-2007] Macro- Copier-coller avec conditions
    Par natou_pc dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 12/05/2013, 18h57
  5. Macro copier/coller avec tri
    Par Lechette dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/03/2008, 12h44

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