Excel vba
Résolu
lex
-
gbinforme Messages postés 14946 Date d'inscription Statut Contributeur Dernière intervention -
gbinforme Messages postés 14946 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai un souci sous VBA qui est le suivant :
Je travaille sur 2 feuilles ! La 1ere feuille est une base de donnée, et la deuxieme feuille sera une extraction de cette base qui est faite par la macro!!
On rentre dans une case de la feuille2 [exemple : cells(1,1)] une valeur. Cette valeur est alors cherchée dans la colonne A de la 1ere feuille, et copier toutes les lignes comportant cette valeur dans la feuille 2.
On peut passer par les filtres mais le but de la macro et d'automatiser la fonction.
Pour copier les lignes j'ai trouvé un bout de programme sous le net pour copier les cellules :
'
Sub ess()
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 données non vides à tester'
NumLig = 2
With Sheets("feuil1") ' feuille source'
NbrLig = .Cells(65536, Col).End(xlUp).Row
For Lig = 3 To NbrLig
If .Cells(Lig, Col).Value <> "" Then
.Cells(Lig, Col).EntireRow.Copy
NumLig = NumLig + 1
Sheets("feuil2").Cells(NumLig, 1).Insert Shift:=xlDown
End If
Next
End With
End Sub
Merci pour votre aide
Alex
J'ai un souci sous VBA qui est le suivant :
Je travaille sur 2 feuilles ! La 1ere feuille est une base de donnée, et la deuxieme feuille sera une extraction de cette base qui est faite par la macro!!
On rentre dans une case de la feuille2 [exemple : cells(1,1)] une valeur. Cette valeur est alors cherchée dans la colonne A de la 1ere feuille, et copier toutes les lignes comportant cette valeur dans la feuille 2.
On peut passer par les filtres mais le but de la macro et d'automatiser la fonction.
Pour copier les lignes j'ai trouvé un bout de programme sous le net pour copier les cellules :
'
Sub ess()
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 données non vides à tester'
NumLig = 2
With Sheets("feuil1") ' feuille source'
NbrLig = .Cells(65536, Col).End(xlUp).Row
For Lig = 3 To NbrLig
If .Cells(Lig, Col).Value <> "" Then
.Cells(Lig, Col).EntireRow.Copy
NumLig = NumLig + 1
Sheets("feuil2").Cells(NumLig, 1).Insert Shift:=xlDown
End If
Next
End With
End Sub
Merci pour votre aide
Alex
A voir également:
- Excel vba
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel compter cellule couleur sans vba - Guide
3 réponses
bonjour,
En modifiant ta macro ainsi cela devrait faire ce que tu veux
Lorsque tu écris .Cells tu es dans la feuille définie par with
Lorsque tu écris Cells tu es dans la feuille définie par activate
En modifiant ta macro ainsi cela devrait faire ce que tu veux
Sub ess() 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 données non vides à tester' NumLig = 2 ' effacement précédente copie Rows(NumLig).Resize(Cells.SpecialCells(xlCellTypeLastCell).Row).Delete With Sheets("feuil1") ' feuille source' NbrLig = .Cells(65536, Col).End(xlUp).Row For Lig = 3 To NbrLig If .Cells(Lig, Col).Value = Cells(1, 1).Value Then NumLig = NumLig + 1 .Cells(Lig, Col).EntireRow.Copy Destination:=Cells(NumLig, 1) End If Next Lig End With End Sub
Lorsque tu écris .Cells tu es dans la feuille définie par with
Lorsque tu écris Cells tu es dans la feuille définie par activate
Merci, c'est exactement ce que je voulais.
J'aurais une autre question enfin deux même :
-Quand je copie les lignes de la feuil1 vers la feuil2, la macro peut-elle supprimer certaines colonnes? (ex col D et H)
- Enfin, je dois faire une mise en page qui reprend la variable présente dans la cells(1,1), celà est - il possible? ou bien doit-on obligatoirement l'a rentrer manuellement?
Merci d'avance,
Alex
J'aurais une autre question enfin deux même :
-Quand je copie les lignes de la feuil1 vers la feuil2, la macro peut-elle supprimer certaines colonnes? (ex col D et H)
- Enfin, je dois faire une mise en page qui reprend la variable présente dans la cells(1,1), celà est - il possible? ou bien doit-on obligatoirement l'a rentrer manuellement?
Merci d'avance,
Alex
bonjour
-Quand je copie les lignes de la feuil1 vers la feuil2, la macro peut-elle supprimer certaines colonnes? (ex col D et H)
Il faut remplacer cette ligne :
par
en remplaçant 245 par ton nombre de colonnes utilisées entre I et la fin à droite.
- Enfin, je dois faire une mise en page qui reprend la variable présente dans la cells(1,1), celà est - il possible? ou bien doit-on obligatoirement l'a rentrer manuellement?
Je ne comprends pas ta question : où veux-tu mettre A1 car il est déjà présent sur toute la colonne A ?
-Quand je copie les lignes de la feuil1 vers la feuil2, la macro peut-elle supprimer certaines colonnes? (ex col D et H)
Il faut remplacer cette ligne :
.Cells(Lig, Col).EntireRow.Copy Destination:=Cells(NumLig, 1)
par
.Cells(Lig, Col).resize(1, 3).Copy Destination:=Cells(NumLig, 1) ' colonnes A:C .Cells(Lig, 5).resize(1, 3).Copy Destination:=Cells(NumLig, 4) ' colonnes E:G .Cells(Lig, 9).resize(1, 245).Copy Destination:=Cells(NumLig, 7)
en remplaçant 245 par ton nombre de colonnes utilisées entre I et la fin à droite.
- Enfin, je dois faire une mise en page qui reprend la variable présente dans la cells(1,1), celà est - il possible? ou bien doit-on obligatoirement l'a rentrer manuellement?
Je ne comprends pas ta question : où veux-tu mettre A1 car il est déjà présent sur toute la colonne A ?