Vba - copier lignes spécifiques

Fermé
jim35 - 1 oct. 2009 à 15:47
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 8 oct. 2009 à 10:05
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

personne ne sait ?
0
C un forum ou le but est de ne pas répondre ?
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
8 oct. 2009 à 09:58
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
8 oct. 2009 à 10:05
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