VBA copier les 5 prochaines lignes pleine & 1st ligne varariable
manautop
Messages postés
152
Statut
Membre
-
eriiic Messages postés 25847 Statut Contributeur -
eriiic Messages postés 25847 Statut Contributeur -
Bonjour,
Je viens encore vers vous car je n'arrive plus à avancer sur ma macro (merci pour toute l'aide déjà apporté)
alors voilà j'ai deux pages
la feuil2 contient en colone toutes les dates de l'année, la première partie de ma macro sert donc à trouver la ligne de la date du jour.
et c'est la que ça se complique,
il faudrait que la seconde partie de la macro demarre à partir de cette ligne trouvé et copie colle les 5 prochaines plages non vide (exemple B1:D1) sur les les lignes B4:B9 de la feui1... avec pour référence pour vérifier si la plage est vide ou pas la colonne C...
j'arrive donc à copier toutes les lignes non vide de la colonne C mais si je lance la macro 2 fois de suite au lieu d'effacer les lignes B4:B9 de la Feuil1 la macro réécrit tout en dessous...je vois pourquoi dans le code pourquoi elle fait ça, mais je ne connais pas d'autre moyen
si vous avez une petite idée, une piste pour m'aider je suis preneur
Sub ChercheDate()
Dim Nbre As Integer, Lig As Integer
Dim Col_B As Range, DCLB As Integer
Dim cellule As Range
Dim Ligne As String
With Worksheets("Feuil2")
'Derniere cellule colonne B
DCLB = .Range("B" & Rows.Count).End(xlUp).Row
'Definition Plage a Tester en memoire (plus rapide)
Set Col_B = .Range("B2:B" & DCLB)
'Recherche si Date du jour existe
If Application.CountIf(Col_B, Date) > 0 Then 'Oui
'Recherche ligne de l'info
Lig = .Columns("B").Find(Date, .Cells(1, "B"), , xlWhole).Row
'Ecriture ligne de l'info trouvee
Range("a1").Value = Lig
Else 'Non
MsgBox "Pas Trouvé"
End If
End With
For Each cellule In Worksheets("post FB").Range("C1:C400")
If Not IsEmpty(cellule) Then
If IsEmpty(Worksheets("What's next").Range("B65536").End(xlUp)) Then
Worksheets("What's next").Range("B65536").End(xlUp).Select
cellule.Delete Worksheets("What's next").Range("B4:B9")
Else
Ligne = Worksheets("What's next").Range("B65536").End(xlUp).Row
Range("B" & Ligne + 1).Select
cellule.Copy Worksheets("What's next").Range("B" & Ligne + 1)
End If
End If
Next cellule
End Sub
Merci d'avance.
Je viens encore vers vous car je n'arrive plus à avancer sur ma macro (merci pour toute l'aide déjà apporté)
alors voilà j'ai deux pages
la feuil2 contient en colone toutes les dates de l'année, la première partie de ma macro sert donc à trouver la ligne de la date du jour.
et c'est la que ça se complique,
il faudrait que la seconde partie de la macro demarre à partir de cette ligne trouvé et copie colle les 5 prochaines plages non vide (exemple B1:D1) sur les les lignes B4:B9 de la feui1... avec pour référence pour vérifier si la plage est vide ou pas la colonne C...
j'arrive donc à copier toutes les lignes non vide de la colonne C mais si je lance la macro 2 fois de suite au lieu d'effacer les lignes B4:B9 de la Feuil1 la macro réécrit tout en dessous...je vois pourquoi dans le code pourquoi elle fait ça, mais je ne connais pas d'autre moyen
si vous avez une petite idée, une piste pour m'aider je suis preneur
Sub ChercheDate()
Dim Nbre As Integer, Lig As Integer
Dim Col_B As Range, DCLB As Integer
Dim cellule As Range
Dim Ligne As String
With Worksheets("Feuil2")
'Derniere cellule colonne B
DCLB = .Range("B" & Rows.Count).End(xlUp).Row
'Definition Plage a Tester en memoire (plus rapide)
Set Col_B = .Range("B2:B" & DCLB)
'Recherche si Date du jour existe
If Application.CountIf(Col_B, Date) > 0 Then 'Oui
'Recherche ligne de l'info
Lig = .Columns("B").Find(Date, .Cells(1, "B"), , xlWhole).Row
'Ecriture ligne de l'info trouvee
Range("a1").Value = Lig
Else 'Non
MsgBox "Pas Trouvé"
End If
End With
For Each cellule In Worksheets("post FB").Range("C1:C400")
If Not IsEmpty(cellule) Then
If IsEmpty(Worksheets("What's next").Range("B65536").End(xlUp)) Then
Worksheets("What's next").Range("B65536").End(xlUp).Select
cellule.Delete Worksheets("What's next").Range("B4:B9")
Else
Ligne = Worksheets("What's next").Range("B65536").End(xlUp).Row
Range("B" & Ligne + 1).Select
cellule.Copy Worksheets("What's next").Range("B" & Ligne + 1)
End If
End If
Next cellule
End Sub
Merci d'avance.
A voir également:
- VBA copier les 5 prochaines lignes pleine & 1st ligne varariable
- Partager photos en ligne - Guide
- Boite gmail pleine - Guide
- Mètre en ligne - Guide
- Formulaire en ligne de meta - Guide
- Aller à la ligne excel - Guide
2 réponses
Bonjour à tous,
alors j'avance à petits pas et votre aide serait la bienvenu,
pour le moment j'arrive à copier la colone C de la feuille 1 vers la colone E de la feuille 2 grace à ce code le tout en enlevant toute les cellules vides de la colone
Sub tesssst()
For Each cellule In Worksheets("Feuil2").Range("B4:d401")
If Not IsEmpty(cellule) Then
If IsEmpty(Worksheets("Feuil1").Range("e65536").End(xlUp)) Then
Worksheets("Feuil1").Range("e2:e9").End(xlUp).Select
cellule.Delete Worksheets("Feuil1").Range("E")
Else
Ligne = Worksheets("Feuil1").Range("e65536").End(xlUp).Row
Range("e" & Ligne + 1).Select
cellule.Copy Sheets("Feuil1").Range(("E") & Ligne + 1)
End If
End If
Next cellule
End Sub
mais je n'arrive pas à copier une plage de cellule de la feuil2 à Feuil1
de plus je n'arrive pas non plus à ne prendre que les 5 prochaines ligne pleines par rapport à la date du jour
merci d avance
alors j'avance à petits pas et votre aide serait la bienvenu,
pour le moment j'arrive à copier la colone C de la feuille 1 vers la colone E de la feuille 2 grace à ce code le tout en enlevant toute les cellules vides de la colone
Sub tesssst()
For Each cellule In Worksheets("Feuil2").Range("B4:d401")
If Not IsEmpty(cellule) Then
If IsEmpty(Worksheets("Feuil1").Range("e65536").End(xlUp)) Then
Worksheets("Feuil1").Range("e2:e9").End(xlUp).Select
cellule.Delete Worksheets("Feuil1").Range("E")
Else
Ligne = Worksheets("Feuil1").Range("e65536").End(xlUp).Row
Range("e" & Ligne + 1).Select
cellule.Copy Sheets("Feuil1").Range(("E") & Ligne + 1)
End If
End If
Next cellule
End Sub
mais je n'arrive pas à copier une plage de cellule de la feuil2 à Feuil1
de plus je n'arrive pas non plus à ne prendre que les 5 prochaines ligne pleines par rapport à la date du jour
merci d avance
Bonjour,
Peut-être qu'avec un petit fichier exemple on sera plus motivés, quoique...
If IsEmpty(Worksheets("Feuil1").Range("e65536").End(xlUp)) Then
si la dernière cellule non vide de la colonne E est vide (???)
Worksheets("Feuil1").Range("e2:e9").End(xlUp).Select
ne peut pas fonctionner...
cellule.Delete Worksheets("Feuil1").Range("E")
n'a aucun sens...
cellule.Delete : ça y est, c'est une ligne complète, finie, terminée.
Et tu ajoutes qcq chose derrière :
Sheets("Feuil1").Range(("E") & Ligne + 1) qui ne se suffit pas à lui même
Bon 3 lignes d'affilées, 4 erreurs.
En tirant des noms de fonction d'un chapeau on aurait peut-être plus de chance d'avoir un code qui tourne.
Je te conseille d'acheter un livre sur vba et d'apprendre à utiliser le pas à pas (mettre un break ou un Stop puis F8) et l'utilisation d'espions.
menu 'affichage / fenetre espions', sélectionner une variable ou une expression et cliquer-glisser dans la fenetre espion. Ensuite tu peux y ajouter .Address à la fin pour voir si l'adresse d'un range calculé correspond à ce que tu attends par exemple.
Bienvenue à l'école de la patience ;-) et bon courage
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
Peut-être qu'avec un petit fichier exemple on sera plus motivés, quoique...
If IsEmpty(Worksheets("Feuil1").Range("e65536").End(xlUp)) Then
si la dernière cellule non vide de la colonne E est vide (???)
Worksheets("Feuil1").Range("e2:e9").End(xlUp).Select
ne peut pas fonctionner...
cellule.Delete Worksheets("Feuil1").Range("E")
n'a aucun sens...
cellule.Delete : ça y est, c'est une ligne complète, finie, terminée.
Et tu ajoutes qcq chose derrière :
Sheets("Feuil1").Range(("E") & Ligne + 1) qui ne se suffit pas à lui même
Bon 3 lignes d'affilées, 4 erreurs.
En tirant des noms de fonction d'un chapeau on aurait peut-être plus de chance d'avoir un code qui tourne.
Je te conseille d'acheter un livre sur vba et d'apprendre à utiliser le pas à pas (mettre un break ou un Stop puis F8) et l'utilisation d'espions.
menu 'affichage / fenetre espions', sélectionner une variable ou une expression et cliquer-glisser dans la fenetre espion. Ensuite tu peux y ajouter .Address à la fin pour voir si l'adresse d'un range calculé correspond à ce que tu attends par exemple.
Bienvenue à l'école de la patience ;-) et bon courage
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.