Boucle copie-colle ligne avec condition de valeur d'une cellule
Valentine06
-
mapatos Messages postés 1 Date d'inscription Statut Membre Dernière intervention -
mapatos Messages postés 1 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je me suis mise à VBA il y a peu, et je galère à faire une macro qui copie colle une ligne en fonction de la valeur de sa cellule en colonne D.
En effet, je souhaite faire une macro qui teste la valeur des cellules d'une colonne (ici colonne D) et qui en fonction de la valeur de la cellule, colle dans une autre feuille la ligne contenant cette cellule :
Pour l'instant ma macro ne fonctionne pas :
Sub Renouvellement()
'macro qui permet de copier toutes les lignes de l 'onglet "BD" dont la valeur de la 'cellule en colonne D est 'inférieure ou égale à E24 (date du jour + un an)
'dans la feuille Contratsàrenouveler
Sheets("BD").Activate
'je me place dans la feuille base de données
Range("D9").Select
'je sélectionne la cellule D9
'Tant que la cellule selectionnée de la colonne D n'est pas vide répéter la boucle
While IsEmpty(ActiveCell) = False
'Si la cellule selectionnée a une valeur inférieure ou égale à la cellule E24 de la feuille Recherchecontratsparfournisseur alors
If ActiveCell.Value <= Sheets("Recherchecontratsparfournisseur").Range("E24") Then
'je copie la ligne de la cellule qui remplit le critère de valeur
ActiveCell.Row.Copy
'j'active la feuille Contratsàrenouveler
Sheets("Contratsàrenouveler").Select
'je me place sur la cellule A3
Range("A3").Select
'je colle ma cellule
ActiveSheet.Paste
'j'insére une ligne en A3 ce qui décale ma cellule copiée d'une ligne vers le bas pour copier la suivante
Rows("3:3").Select
Selection.Insert Shift:=xlDown
End If
Wend
End Sub
Est-ce que vous pourriez me conseiller dans ma démarche pour créer cette macro qui copie-colle des lignes en fonction de la valeur de la cellule de la colonne D ???
Si je n'ai pas été très claire, n'hésitez pas à me demander plus d'infos.
Je suis novice donc j'ai un peu du mal à expliquer ce que je souhaite faire
Merci d'avance
Valentine
Je me suis mise à VBA il y a peu, et je galère à faire une macro qui copie colle une ligne en fonction de la valeur de sa cellule en colonne D.
En effet, je souhaite faire une macro qui teste la valeur des cellules d'une colonne (ici colonne D) et qui en fonction de la valeur de la cellule, colle dans une autre feuille la ligne contenant cette cellule :
Pour l'instant ma macro ne fonctionne pas :
Sub Renouvellement()
'macro qui permet de copier toutes les lignes de l 'onglet "BD" dont la valeur de la 'cellule en colonne D est 'inférieure ou égale à E24 (date du jour + un an)
'dans la feuille Contratsàrenouveler
Sheets("BD").Activate
'je me place dans la feuille base de données
Range("D9").Select
'je sélectionne la cellule D9
'Tant que la cellule selectionnée de la colonne D n'est pas vide répéter la boucle
While IsEmpty(ActiveCell) = False
'Si la cellule selectionnée a une valeur inférieure ou égale à la cellule E24 de la feuille Recherchecontratsparfournisseur alors
If ActiveCell.Value <= Sheets("Recherchecontratsparfournisseur").Range("E24") Then
'je copie la ligne de la cellule qui remplit le critère de valeur
ActiveCell.Row.Copy
'j'active la feuille Contratsàrenouveler
Sheets("Contratsàrenouveler").Select
'je me place sur la cellule A3
Range("A3").Select
'je colle ma cellule
ActiveSheet.Paste
'j'insére une ligne en A3 ce qui décale ma cellule copiée d'une ligne vers le bas pour copier la suivante
Rows("3:3").Select
Selection.Insert Shift:=xlDown
End If
Wend
End Sub
Est-ce que vous pourriez me conseiller dans ma démarche pour créer cette macro qui copie-colle des lignes en fonction de la valeur de la cellule de la colonne D ???
Si je n'ai pas été très claire, n'hésitez pas à me demander plus d'infos.
Je suis novice donc j'ai un peu du mal à expliquer ce que je souhaite faire
Merci d'avance
Valentine
A voir également:
- Vba excel copier ligne vers autre feuille sous condition
- Excel cellule couleur si condition texte - Guide
- Aller à la ligne excel - Guide
- Liste déroulante excel - Guide
- Feuille de pointage excel - Télécharger - Tableur
- Partager photos en ligne - Guide
3 réponses
Bonjour,
prevoir une raz sur l'onglet Contratsàrenouveler ou autre suivant ce que vous voulez faire de la liste cree.
Deux facons de faire:
'empilage inverse par decalage vers le bas
'suivant votre programmation de depart
'empilage normal par ecriture vers le bas
Bon courage
A+
prevoir une raz sur l'onglet Contratsàrenouveler ou autre suivant ce que vous voulez faire de la liste cree.
Deux facons de faire:
'empilage inverse par decalage vers le bas
'suivant votre programmation de depart
Sub Renouvellement_Inv() Dim plage As Range, cel As Range Application.ScreenUpdating = False valcherch = Sheets("Recherchecontratsparfournisseur").Range("E24") With Worksheets("BD") derlig = .Range("D" & Rows.Count).End(xlUp).Row Set plage = .Range("D9:D" & derlig) End With For Each cel In plage If cel <= valcherch Then cel.EntireRow.Copy Worksheets("Contratsàrenouveler").Range("A3").Select Selection.Insert Shift:=xlDown End If Next cel Application.ScreenUpdating = True End Sub
'empilage normal par ecriture vers le bas
Sub Renouvellement_Norm() Dim plage As Range, cel As Range 'stop rafraichissement ecran Application.ScreenUpdating = False 'valeur a chercher valcherch = Sheets("Recherchecontratsparfournisseur").Range("E24") With Worksheets("BD") 'derniere cellule colonne D derlig = .Range("D" & Rows.Count).End(xlUp).Row 'defintion plage a tester en memoire Set plage = .Range("D9:D" & derlig) End With derlig = 0 With Worksheets("Contratsàrenouveler") 'test plage For Each cel In plage If cel <= valcherch Then 'premiere cellule vide apres derniere non vide colonne D derlig = .Range("D" & Rows.Count).End(xlUp).Row + 1 'premier lancement If derlig = 2 Then derlig = 9 End If 'copy ligne entiere cel.EntireRow.Copy .Range("A" & derlig) End If Next cel End With 'rafraichissement ecran Application.ScreenUpdating = True End Sub
Bon courage
A+