Vba - copier lignes spécifiques

jim35 -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
jaurai besoin de copier seulement quelques lignes d'un tableau excel pour les coller dans une autre feuille.
J'ai ce code :
Dim lig     As Long
  Dim col     As String
  Dim NbrLig  As Long
  Dim numlig  As Long
  
  Sheets("feuil2").Activate ' feuille de destination
  
  col = "A"                 ' colonne de la donnée non vide à tester
  numlig = 0
  With Sheets("feuil1")     ' feuille source
  NbrLig = .Cells(65536, col).End(xlUp).Row
  For lig = 1 To NbrLig
    If .Cells(lig, col).Value = "Non valide" Then
      .Cells(lig, col).EntireRow.Copy
      numlig = numlig + 1
      Cells(numlig, 1).Select
      ActiveSheet.Paste
    End If
  Next
  End With


mais ce code copie toute la ligne avec la fonction "EntireRow" quand sur la même ligne il trouve la valeur "non valide". Or, je voudrai que quand il trouve la valeur "non valide", il copit seulement la colonne A, B,E de la même ligne.
Exemple, "non valide" s'inscrit dans la ligne 30 de "Feuil1", ma macro copie seulement A30, B30, E30 dans la feuille "Feuil2" quelqu'un peut m'aider?
merci

4 réponses

  1. jim35
     
    C un forum ou le but est de ne pas répondre ?
    0
  2. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Bonjour,

    C'est un forum où les helpeurs sont des bénévoles, et aussi étrange que cela puisse paraître, ont également une vie autre que CCM.

    .Cells(lig, col).Copy


    ;o)
    0
  3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,
    Un "ponte" du forum te répondrait : "t'affole pô ça va viendre!!!"...
    ta variable col ne sert à rien, je l'ai virée; remplacée en fait par sa valeur (col A = 1 col B = 2 etc) en gras ci-dessous...
    J'ai modifié ta macro comme suit :
    Dim lig As Long
    Dim NbrLig As Long
    Dim numlig As Long
    Sheets("feuil2").Activate ' feuille de destination
    numlig = 1
    With Sheets("feuil1") ' feuille source
    NbrLig = .Cells(65536, 1).End(xlUp).Row
    For lig = 1 To NbrLig
    If .Cells(lig, 1).Value = "Non valide" Then
    .Cells(lig, 1).Copy Cells(numlig, 1) 'copie colle cell feuil1 col A en feuil2 col A
    .Cells(lig, 2).Copy Cells(numlig, 2) 'copie colle cell feuil1 col B en feuil2 col B
    .Cells(lig, 5).Copy Cells(numlig, 3) 'copie colle cell feuil1 col E en feuil2 col C
    numlig = numlig + 1
    End If
    Next
    End With
    Bon courage et ne t'impatiente pas trop...
    0