Chercher première ligne vide
Alexandre
-
Alexandre -
Alexandre -
Bonjour,
J'ai créé une macro dans Excel 2007 pour copier des lignes qui on un certain critère dans la colonne B dans une autre feuille.
Ca marche super bien, mais que je veux faire un deuxième traitement sur la colonne C et je n'arrive pas à sélectionner la dernière ligne vide ...
Tableau source :
Colone A : Date
Colone B : compte débité
Colone C : compte crédité
Colone D : montant
Le but étant de recopier toutes les ligne ou le compte désiré est débité, puis ensuite les lignes ou il est crédité
Ou si vous pouvez mixier pour mettre un critère de selection "ou" ça va aussi ! :-)
Un grand merci d'avance
Voici le script :
Sub ImpressionGrandLivre()
Sheets(Array("Journal 2011", "Journal 2012", "Grand Livre")).Select
Sheets("Journal 2011").Activate
Dim Lig As Long
Dim Col As String
Dim NbrLig As Long
Dim NumLig As Long
Sheets("Grand Livre").Activate ' feuille destination
Col = "B" ' colonne de la donnée non vide à tester
NumLig = 0
With Sheets("Journal 2011") ' feuille source
NbrLig = .Cells(65536, Col).End(xlUp).Row
For Lig = 1 To NbrLig ' numéro de la prmière ligne de données à copier
If .Cells(Lig, Col).Value = "1010" Then
.Cells(Lig, Col).EntireRow.Copy
NumLig = NumLig + 1
Cells(NumLig + 6, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
Next
End With
Col = "C" ' colonne de la donnée non vide à tester
NumLig = 0
With Sheets("Journal 2011") ' feuille source
NbrLig = .Cells(65536, Col).End(xlUp).Row
For Lig = 1 To NbrLig ' numéro de la prmière ligne de données à copier
If .Cells(Lig, Col).Value = "1010" Then
.Cells(Lig, Col).EntireRow.Copy
NumLig = NumLig + 1
Cells(NumLig + Range(A65536).End(xlUp).Offset(1, 0), 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
Next
End With
End Sub
J'ai créé une macro dans Excel 2007 pour copier des lignes qui on un certain critère dans la colonne B dans une autre feuille.
Ca marche super bien, mais que je veux faire un deuxième traitement sur la colonne C et je n'arrive pas à sélectionner la dernière ligne vide ...
Tableau source :
Colone A : Date
Colone B : compte débité
Colone C : compte crédité
Colone D : montant
Le but étant de recopier toutes les ligne ou le compte désiré est débité, puis ensuite les lignes ou il est crédité
Ou si vous pouvez mixier pour mettre un critère de selection "ou" ça va aussi ! :-)
Un grand merci d'avance
Voici le script :
Sub ImpressionGrandLivre()
Sheets(Array("Journal 2011", "Journal 2012", "Grand Livre")).Select
Sheets("Journal 2011").Activate
Dim Lig As Long
Dim Col As String
Dim NbrLig As Long
Dim NumLig As Long
Sheets("Grand Livre").Activate ' feuille destination
Col = "B" ' colonne de la donnée non vide à tester
NumLig = 0
With Sheets("Journal 2011") ' feuille source
NbrLig = .Cells(65536, Col).End(xlUp).Row
For Lig = 1 To NbrLig ' numéro de la prmière ligne de données à copier
If .Cells(Lig, Col).Value = "1010" Then
.Cells(Lig, Col).EntireRow.Copy
NumLig = NumLig + 1
Cells(NumLig + 6, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
Next
End With
Col = "C" ' colonne de la donnée non vide à tester
NumLig = 0
With Sheets("Journal 2011") ' feuille source
NbrLig = .Cells(65536, Col).End(xlUp).Row
For Lig = 1 To NbrLig ' numéro de la prmière ligne de données à copier
If .Cells(Lig, Col).Value = "1010" Then
.Cells(Lig, Col).EntireRow.Copy
NumLig = NumLig + 1
Cells(NumLig + Range(A65536).End(xlUp).Offset(1, 0), 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
Next
End With
End Sub
A voir également:
- Chercher première ligne vide
- Partager photos en ligne - Guide
- Supprimer page word vide - Guide
- Caractere vide - Guide
- Mètre en ligne - Guide
- Formulaire en ligne de meta - Guide
1 réponse
bonjour,
a priori pour chaque date en colonne A on a une information en colonne B ou en colonne C . on peut alors balayer toute la colonne A, tester si en col B ou en col C on a 1010 et copier la ligne dans l'autre feuille. Si la toute première ligne copiée est bien positionnée les autres vont être copiées à la suite
(Pas sûr d'avoir répondu a tout le problème !)
A+
a priori pour chaque date en colonne A on a une information en colonne B ou en colonne C . on peut alors balayer toute la colonne A, tester si en col B ou en col C on a 1010 et copier la ligne dans l'autre feuille. Si la toute première ligne copiée est bien positionnée les autres vont être copiées à la suite
.......
NumLig = 0
Col = 1 ' colonne A
With Sheets("Journal 2011") ' feuille source
NbrLig = .Cells(65536, Col).End(xlUp).Row ' attention à partir de Excel 2007 on peut avoir plus de 1000000 lignes
For Lig = 1 To NbrLig ' numéro de la prmière ligne de données à copier
If .Cells(Lig, Col+1).Value = "1010" or .Cells(Lig, Col+2).Value = "1010" Then 'si en colonne B...ou en colonne C
.Cells(Lig, Col).EntireRow.Copy
NumLig = NumLig + 1
Sheets("Grand Livre").Cells(NumLig + 6, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
end if
Next
End With
...
(Pas sûr d'avoir répondu a tout le problème !)
A+
Mais je dois avoir quelque chose qui bloque, car j'ai toujours le message "erreur d'exécution '1004' sans que la macro ne tourne.
Est-ce que vous auriez quand même la solution pour trouver la ligne vide, car dans l'optique ou ça marche bien, je voudrais mettre plusieurs macro à la suite avec des critères différents.
L'erreur est dans la 7ème ligne avant la fin "Cells(NumLig + Range(A65536).End(xlUp).Offset(1, 0), 1).Select "
A+
Cells(NumLig + WorksheetFunction.CountA(Range("A:A")), 1).Select
Mais au bout de quelques lignes, Excel m'insert des lignes vides ...
Par contre je n'arrive pas encore à maîtriser le "OU" ...
Sheets(Array("Journal 2011", "Journal 2012", "Grand Livre")).Select
Sheets("Journal 2011").Activate
Dim Lig As Long
Dim Col As String
Dim NbrLig As Long
Dim NumLig As Long
Sheets("Grand Livre").Activate ' feuille destination
Col = "B" ' colonne de la donnée non vide à tester
NumLig = 0
With Sheets("Journal 2011") ' feuille source
NbrLig = .Cells(65536, Col).End(xlUp).Row
For Lig = 1 To NbrLig ' numéro de la prmière ligne de données à copier
If .Cells(Lig, Col).Value = "1010" Then
.Cells(Lig, Col).EntireRow.Copy
NumLig = NumLig + 1
Cells(NumLig + 6, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
Next
End With
Col = "C" ' colonne de la donnée non vide à tester
NumLig = 0
With Sheets("Journal 2011") ' feuille source
NbrLig = .Cells(65536, Col).End(xlUp).Row
For Lig = 1 To NbrLig ' numéro de la prmière ligne de données à copier
If .Cells(Lig, Col).Value = "1010" Then
.Cells(Lig, Col).EntireRow.Copy
NumLig = NumLig + 1
Cells(NumLig + WorksheetFunction.CountA(Range("A:A")), 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
Next
End With
End Sub