Vba - copier lignes spécifiques

jim35 -  
pijaku Messages postés 12263 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
A voir également:

4 réponses

jim35
 
personne ne sait ?
0
jim35
 
C un forum ou le but est de ne pas répondre ?
0
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   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
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
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