Copie lignes classeur ferme vers classeur de travail (ouvert)

ccharvet1

XLDnaute Nouveau
Bonjour,

J'essaie de copie des lignes d'un classeur fermer vers le classeur actuellement ouvert (travail)
Un début de code que j'ai mis dans l'onglet Tresorerie
Code:
Private Sub Worksheet_Activate()
Dim WbkSource As Workbook, LigSource As Integer, LigDest As Integer
 
Application.ScreenUpdating = False
 
Set WbkSource = Workbooks.Open("D:\Gestion\Gest-Fo.xls")
 
With ThisWorkbook.Sheets("Tresorerie")
    LigDest = .Range("c15:025")
End With

With WbkSource .Sheets("Tresorerie")
    LigSource = .Range("c6:016")
    .Rows(LigSource).Copy
    WbkSource.Sheets("Tresorerie").Range("C" & LigDest).Paste:=xlPasteValues
    Application.CutCopyMode = False
End With
 
WbkSource.Close True
Set WbkSource = Nothing
 
Application.ScreenUpdating = True
End Sub
celui ci est actif dès l'ouverture de l'onglet Tresorerie du classeur ouvert.

Pouvez-vous me dire pourquoi ça ne fonctionne pas ?

J'espère que je suis clair dans la description de ce que je veux faire.

Merci
 

Pierrot93

XLDnaute Barbatruc
Re : Copie lignes classeur ferme vers classeur de travail (ouvert)

Bonjour,

modifie peut être ainsi :
Code:
With WbkSource.Sheets("Tresorerie")
    .Range("c6:016").Copy Destination:=WbkSource.Sheets("Tresorerie").Range("C" & LigDest)
    Application.CutCopyMode = False
End With

bon après midi
@+
 

ccharvet1

XLDnaute Nouveau
Re : Copie lignes classeur ferme vers classeur de travail (ouvert)

re,

j'ai fais
Code:
With ThisWorkbook.Sheets("Tresorerie")
    LigDest = .Range("c15")
End With
mais maintenant ça bloque ici
Code:
    .Range("c6:016").Copy Destination:=WbkSource.Sheets("Tresorerie").Range("C" & LigDest)

merci
 
Dernière édition:

ccharvet1

XLDnaute Nouveau
Re : Copie lignes classeur ferme vers classeur de travail (ouvert)

re,

j'ai fais
Code:
With ThisWorkbook.Sheets("Tresorerie")
    LigDest = .Range("c15")
End With
mais maintenant ça bloque ici
Code:
    .Range("c6:016").Copy Destination:=WbkSource.Sheets("Tresorerie").Range("C" & LigDest)

merci
 

ccharvet1

XLDnaute Nouveau
Re : Copie lignes classeur ferme vers classeur de travail (ouvert)

re,

Je n'ai pas bien saisie votre question, si c'est du code de message d'erreur dont vous parler, c'est le même que le précédent. Le document source s'ouvre bien, petite parenthèse.

merci
 

Pierrot93

XLDnaute Barbatruc
Re : Copie lignes classeur ferme vers classeur de travail (ouvert)

Re,


Code:
LigDest = .Range("c15")

cette instruction te renvoie dans la variable "LigDest" le contenu de la cellule C15.... je ne suis pas sur que c'est cela que tu veux utiliser pour déterminer la ligne de destination....
 

ccharvet1

XLDnaute Nouveau
Re : Copie lignes classeur ferme vers classeur de travail (ouvert)

re,

En faite lorsque l'on fait une copie d'un ensemble de cellules d'une feuille vers une autre, on sélectionne simplement la 1ére cellules en haut à gauche et la copie se fait sur tout l'ensemble. Peux-être que la façon de raisonner n'est pas la même en VBA, questionnement bête mais je débute et donc je cherche le pourquoi du comment.

Merci de votre compréhension Pierrot93 et de votre aide
 

Pierrot93

XLDnaute Barbatruc
Re : Copie lignes classeur ferme vers classeur de travail (ouvert)

Re,

bah... c'est un peu le même principe, un exemple ci-dessous pour faire une copie d'un classeur à un autre (les 2 sont ouverts)

Code:
Workbooks("ClasseurSource.xls").Sheets("FeuilleSource").Range("A1:C15").Copy _
    Destination:=Workbooks("ClasseurDestination.xls").Sheets("FeuilleDestination").Range("A1")
 

ccharvet1

XLDnaute Nouveau
Re : Copie lignes classeur ferme vers classeur de travail (ouvert)

bonjour,

Maintenant ça fonctionne avec ceci
Code:
Dim WbkSource As Workbook, WbkDest As Workbook, LigSource As Long, LigDest As Long

Application.ScreenUpdating = False

Set WbkSource = Workbooks.Open("D:\Gestion\Gest-Fo.xls")

LigDest = 15
 
With WbkSource.Sheets("Tresorerie")
    .Range("C6:N16").Copy
    ThisWorkbook.Sheets("Tresorerie").Range("C" & LigDest).PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False
End With
 
WbkSource.Close True
Set WbkSource = Nothing
 
Application.ScreenUpdating = True
mais il garde la mise en page (encadré, caractère gras et couleur de fond), je n'arrive pas à faire la copie des valeurs uniquement.
Paste:=xlPasteValues est la bonne façon en principe !

Une petite aide svp

Merci
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 989
dernier inscrit
jralonso