Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/01/2012, 22h36   #1
 
Homme
Administrateur de base de données
Inscription : décembre 2011
Messages : 21
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2011
Messages : 21
Points : -5
Points : -5
Par défaut Copie de cellules d'un classeur à l'autre

Bonjour

Je ne sais pas quel est le problème dans ce code ne fonctionne pas
Notez que je veux copier des cellules isolées

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 Option Explicit
Sub Copier()
    Dim wbkc As Workbook, wbks As Workbook, nom$, chemin$, f As Worksheet
    Dim T%, R%
    Application.ScreenUpdating = 0
    chemin = "C:\A\"
    nom = Dir(chemin & "\*.xlsx")
    Set wbkc = ThisWorkbook
    Do While nom <> ""
    Set wbks = Workbooks.Open(chemin & "\" & nom)
        For Each f In wbks.Worksheets
        R = f.UsedRange.End(xlUp).Row
        wbkc.Activate
        f.Range(Union(Range("A" & R), Range("E" & R), Range("F" & R))).Copy
        T = Cells(Rows.Count, 1).End(xlUp).Row + 1
        ThisWorkbook.Worksheets(1).Range("A" & T).PasteSpecial xlPasteValues
 
        Next f
        nom = Dir
        wbks.Close 0
    Loop
End Sub
alidroos est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 02/01/2012, 22h47   #2
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Les Range et Cells doivent être précédés de la feuille à laquelle ils se reportent
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Sub Copier()
Dim Nom As String, Chemin As String
Dim LastLig As Long
Dim Wbks As Workbook
Dim Sh As Worksheet
 
Application.ScreenUpdating = False
Chemin = "C:\A\"
Nom = Dir(Chemin & "\*.xlsx")
Do While Nom <> ""
    Set Wbks = Workbooks.Open(Chemin & "\" & Nom)
    For Each Sh In Wbks.Worksheets
        LastLig = Sh.UsedRange.End(xlUp).Row
        Union(Sh.Range("A" & LastLig), Sh.Range("E" & LastLig), Sh.Range("Sh" & LastLig)).Copy
        With ThisWorkbook.Worksheets(1)
            .Cells(.Rows.Count, 1).End(xlUp)(2).PasteSpecial xlPasteValues
        End With
        Application.CutCopyMode = False
    Next Sh
    Wbks.Close False
    Nom = Dir
Loop
End Sub
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/01/2012, 00h12   #3
 
Homme
Administrateur de base de données
Inscription : décembre 2011
Messages : 21
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2011
Messages : 21
Points : -5
Points : -5
Merci professeur mercatog

Permettez-moi de travailler avec moi de cette manière

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Option Explicit
Sub Copier()
    Dim wbkc As Workbook, Wbks As Workbook, Nom$, Chemin$, f As Worksheet
    Dim T%, R%
    Application.ScreenUpdating = 0
    Chemin = "C:\A\"
    Nom = Dir(Chemin & "\*.xlsx")
    Set wbkc = ThisWorkbook
    Do While Nom <> ""
    Set Wbks = Workbooks.Open(Chemin & "\" & Nom)
        For Each f In Wbks.Worksheets
        R = f.Cells(Rows.Count, 1).End(xlUp).Row
        wbkc.Activate
        Union(f.Range("A3:A" & R), f.Range("E3:E" & R), f.Range("F3:F" & R)).Copy
        T = Cells(Rows.Count, 1).End(xlUp).Row + 1
        ThisWorkbook.Worksheets(1).Range("A" & T).PasteSpecial xlPasteValues
        Next f
        Nom = Dir
        Wbks.Close 0
    Loop
End Sub
alidroos est déconnecté   Envoyer un message privé Réponse avec citation 01
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h48.


 
 
 
 
Partenaires

Hébergement Web