VBA - Copier/coller des lignes sous condition
Fermé
TheFlow31
Messages postés
1
Date d'inscription
dimanche 11 août 2019
Statut
Membre
Dernière intervention
11 août 2019
-
11 août 2019 à 21:29
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 15 août 2019 à 11:28
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 15 août 2019 à 11:28
A voir également:
- VBA - Copier/coller des lignes sous condition
- Copier coller pdf - Guide
- Copier une vidéo youtube - Guide
- Excel cellule couleur si condition texte - Guide
- Super copier - Télécharger - Gestion de fichiers
- Copier coller formule excel sans décalage ✓ - Forum Bureautique
2 réponses
franc38
Messages postés
197
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
27 février 2023
38
15 août 2019 à 07:01
15 août 2019 à 07:01
Bonjour
Je te propose cette macro
Sub traitement()
Dim i As Long, col As Integer, derlig As Long, dercol As Integer
dercol = Sheets("Actions en cours").Range("A1").End(xlToRight).Column
For i = 1 To Sheets("Actions en cours").Range("A" & Rows.Count).End(xlUp).Row
If Sheets("Actions en cours").Cells(i, 7).Value = 1 Then
derlig = Sheets("Tableau de bord").Range("A" & Rows.Count).End(xlUp).Row + 1
dercol = Sheets("Actions en cours").Range("A1").End(xlToRight).Column
For col = 1 To dercol
Sheets("Tableau de bord").Cells(derlig, col).Value = Sheets("Actions en cours").Cells(i, col).Value
Next
End If
Next
dercol = Sheets("Actions en attente").Range("A1").End(xlToRight).Column
For i = 1 To Sheets("Actions en attente").Range("A" & Rows.Count).End(xlUp).Row
If Sheets("Actions en attente").Cells(i, 7).Value = 1 Then
derlig = Sheets("Tableau de bord").Range("A" & Rows.Count).End(xlUp).Row + 1
For col = 1 To dercol
Sheets("Tableau de bord").Cells(derlig, col).Value = Sheets("Actions en attente").Cells(i, col).Value
Next
End If
Next
End Sub
A+ François
Je te propose cette macro
Sub traitement()
Dim i As Long, col As Integer, derlig As Long, dercol As Integer
dercol = Sheets("Actions en cours").Range("A1").End(xlToRight).Column
For i = 1 To Sheets("Actions en cours").Range("A" & Rows.Count).End(xlUp).Row
If Sheets("Actions en cours").Cells(i, 7).Value = 1 Then
derlig = Sheets("Tableau de bord").Range("A" & Rows.Count).End(xlUp).Row + 1
dercol = Sheets("Actions en cours").Range("A1").End(xlToRight).Column
For col = 1 To dercol
Sheets("Tableau de bord").Cells(derlig, col).Value = Sheets("Actions en cours").Cells(i, col).Value
Next
End If
Next
dercol = Sheets("Actions en attente").Range("A1").End(xlToRight).Column
For i = 1 To Sheets("Actions en attente").Range("A" & Rows.Count).End(xlUp).Row
If Sheets("Actions en attente").Cells(i, 7).Value = 1 Then
derlig = Sheets("Tableau de bord").Range("A" & Rows.Count).End(xlUp).Row + 1
For col = 1 To dercol
Sheets("Tableau de bord").Cells(derlig, col).Value = Sheets("Actions en attente").Cells(i, col).Value
Next
End If
Next
End Sub
A+ François
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
Modifié le 15 août 2019 à 11:41
Modifié le 15 août 2019 à 11:41
Bonjour,
tu as déclaré Tampon 2 et 3 comme integer
Mais tu écris
qui sont des plages de cellules donc à déclarer comme "range" (erreur 13)
tu cherches la valeur 1. d'après ta ligne
"1", c'est 1 en valeur "texte" et de toutes façons, je vois mal l'intér^t de Ucase(....
d'autre part, à partir dy moment où tu déclares
With Sheets("Tableau de bord")
tu n'as pas besoin d'utiliser d'autres with .range...puisque tu es "enfermé" dans la feuille
je n'ai pas regardé le fonctionnement mais tu as fait un bon début ! ;o) notamment en déclarant tes variables et en figeant l'écran; oublier cela dénote un mauvais programmeur...
continue, tu es sur la bonne voie
Pour progresser efficacement:
https://bidou.developpez.com/article/VBA/
tu as déclaré Tampon 2 et 3 comme integer
Mais tu écris
Tampon2 = Sheets(j).Range("C" & i & ":F" & i)
Tampon3 = Sheets(j).Range("H" & i & ":J" & i)
qui sont des plages de cellules donc à déclarer comme "range" (erreur 13)
tu cherches la valeur 1. d'après ta ligne
If UCase(Range("G" & i)) = "1" Then
"1", c'est 1 en valeur "texte" et de toutes façons, je vois mal l'intér^t de Ucase(....
d'autre part, à partir dy moment où tu déclares
With Sheets("Tableau de bord")
tu n'as pas besoin d'utiliser d'autres with .range...puisque tu es "enfermé" dans la feuille
je n'ai pas regardé le fonctionnement mais tu as fait un bon début ! ;o) notamment en déclarant tes variables et en figeant l'écran; oublier cela dénote un mauvais programmeur...
continue, tu es sur la bonne voie
Pour progresser efficacement:
https://bidou.developpez.com/article/VBA/