Copie auto de cellules remplies (Macro)

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

arnaudbu

XLDnaute Occasionnel
Bonjour,

Actuellement je copie des lignes,une à une, vers une autre feuille en les sélectionnant manuellement et en lancant une macro.

Code:
With Sheets("Rapport")
    Set rs = .Range(ActiveCell, ActiveCell.Offset(0, 6))
    Set rd = Sheets("Suivi_Actions").Range("A65536").End(xlUp).Offset(1, 0)
    rs.Copy
    rd.PasteSpecial xlValues
    rd.PasteSpecial xlFormats
   End With
Application.CutCopyMode = False

Comment faire pour que la macro fasse une boucle sur les lignes 11,12,13,14,16,17,18,19,20,22,23,24,26,28,29,31,32 et copie automatiquement les lignes si la colonne I de ces lignes sont non vide ?

Merci @+
 
Re : Copie auto de cellules remplies (Macro)

Bonjour Arnaud

si j'ai bien compris, mais sans fichier pas facile pour tester...

Code:
Option Explicit
Sub test()
Dim t() As Variant, i As Integer
t = Array(11, 12, 13, 14, 16, 17, 18, 19, 20, 22, 23, 24, 26, 28, 29, 31, 32)
With Sheets("Rapport")
    For i = LBound(t) To UBound(t)
        If .Range("I" & t(i)).Value <> "" Then .Range("A" & t(i)).Resize(1, 7).Copy Sheets("Suivi_Actions").Range("A65536").End(xlUp).Offset(1, 0)
    Next i
End With
End Sub

bonne soirée
@+
 
Re : Copie auto de cellules remplies (Macro)

Salut et merci,

Ca marche pas mal. J'ai quelque modifs pour la copie.

Le seul hic c'est qu'il me copie la permière ligne 1 fois, la deuxième 1 fois, la troisième 3 fois, la quatrième 10 fois et ainsi de suite ...

Code:
Dim rs As Range, rd As Range
Dim t() As Variant, i As Integer

t = Array(11, 12, 13, 14, 16, 17, 18, 19, 20, 22, 23, 24, 26, 28, 29, 31, 32)

With Sheets("Rapport")
    For i = LBound(t) To UBound(t)
    
      Set rd = Sheets("Suivi_Actions").Range("A65536").End(xlUp).Offset(1, 0)
      Set rs = .Range("I" & t(i)).Resize(1, 6)
      
        If .Range("I" & t(i)).Value >= "1" Then rs.Copy
        
      rd.PasteSpecial xlValues
      rd.PasteSpecial xlFormats
    
    Next i
    
End With

Application.CutCopyMode = False
 
Re : Copie auto de cellules remplies (Macro)

Bonjour le fil, Pierrot🙂

Ne manquerait-il pas un End IF:

Code:
Dim rs As Range, rd As Range
Dim t() As Variant, i As Integer
 
t = Array(11, 12, 13, 14, 16, 17, 18, 19, 20, 22, 23, 24, 26, 28, 29, 31, 32)
 
With Sheets("Rapport")
    For i = LBound(t) To UBound(t)
 
      Set rd = Sheets("Suivi_Actions").Range("A65536").End(xlUp).Offset(1, 0)
      Set rs = .Range("I" & t(i)).Resize(1, 6)
 
      [SIZE=3] [COLOR=red]If .Range("I" & t(i)).Value >= "1" Then[/COLOR][/SIZE]
               rs.Copy
 
             rd.PasteSpecial xlValues
             rd.PasteSpecial xlFormats
     [SIZE=3][COLOR=red]End If[/COLOR][/SIZE]
    Next i
 
End With
 
Application.CutCopyMode = False
(sans plus avoir examiné le sujet)
A+
 
Dernière modification par un modérateur:
Re : Copie auto de cellules remplies (Macro)

En fait il boucle autant de fois qu'il y a de nombre de valeur dans le Array.

J'ai 17 valeurs dans le Array, donc il me met 17 lignes.

Si j'ai 2 entrées à copier dans mon tableau, il me copie 1 fois la première ligne et 16 fois la deuxième.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour