modifier une macro

walifon

XLDnaute Nouveau
Bonjour à tous,

J'ai un fichier avec une macro que m'a gentiment réalisée BhBh mais je souhaiterais qu'elle soit légèrement modifiée....

Il s'agit d'une macro qui copie la colonne N de tous les onglets d'un classeur et les colle en colonne dans un onglet de synhtèse. elle copie également dan chaque ongle la cellule C 3 et la colle sur la ligne 1 de l'onglet compilation....

Est-il possible que la macro pour qu'elle:

- Commence à copier dans l’onglet compilation dans la colonne D et non plus G
- Ne copie dans l’onglet N que les 56 premières lignes (en mettant toujours la cellule C3 sur la ligne 1 dans l’onglet « compilation » comme cela est déjà le cas)
- Que le collage se fasse en coller valeurs
- Enfin qu’à chaque fois que je réactive la macro les colonne ne se collent pas a la suite mais qu’elles effacent et se recollent à partir de la colonne D….

Merci d’avance à celui qui me donnera ce coupe de main !!

Amandine…
 

Pièces jointes

  • macro de recopiev2.xls
    44 KB · Affichages: 46
  • macro de recopiev2.xls
    44 KB · Affichages: 39
  • macro de recopiev2.xls
    44 KB · Affichages: 49
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : modifier une macro

Bonjour Walifon, bonjour le foprum,

Je te propose la macro suivante :

Code:
Sub copie()
Dim c As Worksheet 'déclare la variable c
Dim x As Byte 'déclare la variable x
Dim dest As Range 'déclare la variable dest
 
Set c = Sheets("COMPILATION") 'définit la variable c
c.Range("D1:IV65536").ClearContents 'efface les anciennes valeurs
 
For i = 1 To Sheets.Count 'boucle sur tous les onglets du classeur
 
    'condition 1 : si les deux premières lettres de l'onglet sont "SC" (à adapter...)
    If Left(Sheets(i).Name, 2) = "SC" Then
 
        'définit la variable dest
        If c.Range("D1").Value = "" Then 'consition 2 : si D1 est vide
            Set dest = c.Range("D1") 'dest=d1
        Else 'sinon
            Set dest = c.Cells(1, 256).End(xlToLeft).Offset(0, 1) 'dest est la prochaine colonne
        End If 'fin de la condition 2
 
        With Sheets(i) 'prend en compte l'onglet de la boucle
            dest.Value = .Range("C3") 'récupère la valeur de C3
 
            For x = 1 To 56 'boucle sur les 56 premières lignes
                dest.Offset(x, 0).Value = .Cells(x, 14).Value 'recupère les valeurs
            Next x 'prochaine ligne de la boucle
        End With 'fin de la prise en compte de l'onglet de la boucle
 
    End If 'fin de la condition 1
 
Next i 'prochain onglet du classeur
 
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 837
Messages
2 092 661
Membres
105 482
dernier inscrit
Eric.FKF