Problème de macro copier-coller

Dotre

XLDnaute Nouveau
Bonjour à tous,

Je crois avoir chercher assez sans avoir trouvé de réponse concrète et je m'en résigne à vous demander de l'aide...

Voici mon code VBA
PHP:
    Sub CommandButton1_Click()

Application.Calculation = xlManual
 Application.ScreenUpdating = False

  Sheets("ABCMB Export").Cells.ClearContents
  Sheets("dcoll").Cells.ClearContents


 
'Last cell in column
Dim WS As Worksheet
Dim LastCell As Range
Dim LastCellRowNumber As Long

Set WS = Worksheets("ABCMB Export")
With WS
    Set LastCell = .Cells(.Rows.Count, "C").End(xlUp)
    LastCellRowNumber = LastCell.Row + 1
End With

    
    Dim wb As Workbook, wb2 As Workbook
Dim vFile As Variant

'Set source workbook
Set wb = ActiveWorkbook

'Ouvre le fichier correspondant
vFile = Application.GetOpenFilename("Excel-files,*.xlsx", _
    1, "Sélectionner le fichier à extraire", , False)

'Si l'utilisateur n'a rien saisi,fin
If TypeName(vFile) = "Boolean" Then Exit Sub
Workbooks.Open vFile

'saisi du nouveau fichier
Set wb2 = ActiveWorkbook

'selectionne les cellules que l'on veut copier
wb2.Worksheets("ABCMB Export").UsedRange.Copy 'ici j'avais Range("A1:S400")

'retour à l'original
wb.Activate

'Copie a partir de la derniere ligne
wb.Worksheets("ABCMB Export").Range("A").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Application.CutCopyMode = False

wb2.Save
wb2.Close

 Application.ScreenUpdating = True
End Sub
Pour je ne sais quelle raison, mon select range dans mon WB2 ne sélectionne et ne copie que les 400 premières ligne. J'avais mis 400 au départ comme vous pouvez le voir dans ma note, par contre le fichier source a considérablement grossis et le nombre de ligne varie de mois en mois. J'ai vu les commentaires sur le derligne et sur le cells mais aucune ne fonctionne non plus...
 

CPk

XLDnaute Impliqué
Re : Problème de macro copier-coller

Bonjour , quelque chose m'interpelle

wb.Worksheets("ABCMB Export").Range("A").Select

En théorie rien n'est selectionné car Range("A") n'a pas l'air d'être une adresse valide (mais je peux me tromper)

Essayez plutôt Range("A1") qui du coup ressemble plus à une adresse de destination pour le collage.
L'usedrange n'a pas l'air d'être mal utilisé donc peut-être que le problème est ailleur dans le déroulement de la macro et des fichiers associés

Pour trouver la première ligne vide en partant du bas vers le haut.
wb.Worksheets("ABCMB Export").Cells(rows.count,1).end(3).offset(1,0)
 
Dernière modification par un modérateur:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Problème de macro copier-coller

Bonsoir le fil, bonsoir le forum,

Je plussoie la réponse de CPK. Mais je pense que tu voulais copier non pas dans A1 mais dans la première cellule vide de la colonne A. En revanche, je ne vois pas comment tu vas pouvoir copier quoi que ce soit si tu commences par effacer le contenu de toutes les cellules de l'onglet !...
Code:
Sheets("ABCMB Export").Cells.ClearContents


Évite les Select autant que tu le peux. Il ne font que ralentir l'exécution du code.
Ton code (si j'ai bien compris) sans Select :

Code:
Sub CommandButton1_Click()
Dim C1 As Workbook 'Classeur 1
Dim O1 As Worksheet 'Onglet 1
Dim PLV1 As Long 'Première Ligne Vide 1
Dim vFile As Variant
Dim C2 As Workbook
Dim O2 As Worksheet
Dim PLV2 As Long

Application.Calculation = xlManual
Application.ScreenUpdating = False
Set C1 = ThisWorkbook
Set O1 = C1.Worksheets("ABCMB Export")
PLV1 = O1.Cells(.Rows.Count, "C").End(xlUp).Row + 1 'pourquoi la colonne C et pas la A ?
Sheets("dcoll").Cells.ClearContents
vFile = Application.GetOpenFilename("Excel-files,*.xlsx", _
   1, "Sélectionner le fichier à extraire", , False)
If TypeName(vFile) = "Boolean" Then Exit Sub
Workbooks.Open vFile
Set C2 = ActiveWorkbook
Set O2 = C2.Worksheets("ABCMB Export")
PLV2 = O2.Cells(.Rows.Count, "C").End(xlUp).Row
O2.Range("A:S" & PLV2).Copy
O1.Range("A" & PLV1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
C2.Close True
Application.ScreenUpdating = True
End Sub
 

CPk

XLDnaute Impliqué
Re : Problème de macro copier-coller

Bonjour Robert, Dotre, le forum.

Robert : merci du plussoie-ment (?).
Dotre, le cheminement de la macro est assez lisible, prendre d'un côté pour mettre de l'autre mais il reste des points à éclaircir sur la destination...Si vous effacez complètement la feuille de destination (ce que vous faites avec clearcontents), vous n'êtes plus obligé de calculer la dernière ligne non vide pour coller les nouvelles données.
 
Dernière modification par un modérateur:

Dotre

XLDnaute Nouveau
Re : Problème de macro copier-coller

Bonjour à tous et merci pour vos réponses,

je réalise que je n'ai pas bien expliqué ce que mon macro faisait. En fait mon macro est dans une feuille gabarit. Lorsque j'ouvre ce gabarit et que je pars le click, il efface toutes les données qui sont dans les feuilles ABCMB Export et dcoll de ce classeur, m'ouvre un sélecteur de fichier pour aller chercher les données dont j'ai besoin (qui ont été extraite d'une base de donnée interne qui s'appelle Dcollaborateur). C'est la suite qui se gâche...Je veux sélectionner toutes les données qui ont été extraite et les copier dans mon fichier. C'est vrai que je n'ai plus vraiment besoin de copier a partir de la dernière ligne étant donné que j'ai tout effacé préalablement..
Les données que je veux copier peuvent s'échelonner sur 200-300 ou même 675 lignes tout dépendant de ce qui a été imputé dans le mois..
- le copie colle actuelle fonctionne tel qu'il est écrit présentement, par contre il ne copie-colle que les 400 premières lignes du fichier de données dans mon gabarit (Je vais modifier le range a1 par contre)

Si ca peut aider, je pourrais vous envoyer mon fichier excel en dernier recours parce que les données à l'intérieur sont confidentielles...
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Problème de macro copier-coller

Bonjour le fil, le forum,

Le code que je t'avais proposé était presque bon. Je l'ai un peu modifié pour l'adapter à tes nouvelles explications. Il te faudra peut-être adapter le nom de l'onglet où se trouvent les donner à récupérer et la colonne qui contient le plus de données (peut-être A au lieu de C) :
Code:
Sub CommandButton1_Click()
Dim C1 As Workbook 'Classeur 1
Dim O1 As Worksheet 'Onglet 1
Dim vFile As Variant
Dim C2 As Workbook
Dim O2 As Worksheet
Dim PLV As Long

Application.Calculation = xlManual
Application.ScreenUpdating = False
Set C1 = ThisWorkbook
Set O1 = C1.Worksheets("ABCMB Export")
C1.Cells.ClearContents
Sheets("dcoll").Cells.ClearContents
vFile = Application.GetOpenFilename("Excel-files,*.xlsx", _
   1, "Sélectionner le fichier à extraire", , False)
If TypeName(vFile) = "Boolean" Then Exit Sub
Workbooks.Open vFile
Set C2 = ActiveWorkbook
Set O2 = C2.Worksheets("ABCMB Export") 'a adapter <<ici>>
PLV = O2.Cells(.Rows.Count, "C").End(xlUp).Row 'a adapter <<ici>>
O2.Range("A:S" & PLV).Copy
O1.Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
   :=False, Transpose:=False
Application.CutCopyMode = False
C2.Close True
Application.ScreenUpdating = True
End Sub
 

Dotre

XLDnaute Nouveau
Re : Problème de macro copier-coller

Bonjour et merci pour cette piste Robert,

Tout marche parfaitement, par contre, cela ne m'a copié que les 400 premières ligne encore...! J'ai vérifié et j'ai vraiment 675 lignes dans mon fichier dans lequel je vais chercher les données, que ce soit dans la colonne, a,b,c,d,etc.
 

CPk

XLDnaute Impliqué
Re : Problème de macro copier-coller

Bonjour dotre,Robert.
Dotre, c'est habituellement par les joints que ça fuit. De quand date la dernière révision ? :|
 
Dernière modification par un modérateur:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Problème de macro copier-coller

Re,

Fait tourner la macro pas à pas avec [F8] et après la ligne :
Code:
PLV = O2.Cells(.Rows.Count, "C").End(xlUp).Row 'a adapter <<ici>>

Dis nous ce que vaut PLV !...

Mais je re plussoie CPK, sans les deux fichiers qui vont bien on va tourner en rond pendant ds lustres voire même des lampadaires...
 

Dotre

XLDnaute Nouveau
Re : Problème de macro copier-coller

Bonjour à vous deux,

lorsque j'essayais de voir les étapes pas-à-pas du macro, cela me donnait une erreur à .Rows, probablement parce qu'en faisant le macro, cela ne me donnait pas le ''prompt'' pour ouvrir l'autre fichier?

voici les documents, le fichier de test et le fichier dans lequel je vais chercher mes données (export).

J'ai mit un mot de passe dans le fichier de test et j'ai mit des nombres au lieu des tâches mais ca va faire pareille. J'ai protégé le fichier de gabarit avec un mot de passe.. Je vais vous l'envoyer par message... Vous allez pouvoir voir les 3 étapes que j'essaie de faire dans l'onglet instruction.

Merci encore de vos retours rapides..
 

Pièces jointes

  • export.xls
    214.5 KB · Affichages: 37
  • Suivi budgétaire gabarittest.xlsm
    223.5 KB · Affichages: 36
  • export.xls
    214.5 KB · Affichages: 39
Dernière modification par un modérateur:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Problème de macro copier-coller

Re,

Voilà, avec les fichier exemple j'ai tout de suiite vu ou étaient les erreurs (il y en avait trois).
Le code testé :

Code:
Sub CommandButton1_Click()
Dim C1 As Workbook 'Classeur 1
Dim O1 As Worksheet 'Onglet 1
Dim vFile As Variant
Dim C2 As Workbook
Dim O2 As Worksheet
Dim PLV As Long

Application.Calculation = xlManual
Application.ScreenUpdating = False
Set C1 = ThisWorkbook
Set O1 = C1.Worksheets("ABCMB Export")
O1.Cells.ClearContents
Sheets("dcoll").Cells.ClearContents
vFile = Application.GetOpenFilename("Excel files (.xlsx), *.xlsx", _
1, "Sélectionner le fichier à extraire", , False)
If TypeName(vFile) = "Boolean" Then Exit Sub
Workbooks.Open vFile
Set C2 = ActiveWorkbook
Set O2 = C2.Worksheets("ABCMB Export") 'a adapter <<ici>>
PLV = O2.Cells(Application.Rows.Count, "A").End(xlUp).Row 'a adapter <<ici>>
O2.Range("A1:S" & PLV).Copy
O1.Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
C2.Close True
Application.ScreenUpdating = True
Application.Calculation = xlAutomatic
End Sub
 

Dotre

XLDnaute Nouveau
Re : Problème de macro copier-coller

Bonjour Robert,

L'avais-tu testé? Je viens de le faire rouler et je n'ai que les 400 premières lignes encore..!

De plus, pourrais-tu m'expliquer ce que tu avais vu comme erreur, histoire que je me développe et que je puisse, un jours, moi aussi, aider les gens?
 

CPk

XLDnaute Impliqué
Re : Problème de macro copier-coller

Je n'ai aucune invitation à en mettre un. Ceci dit je suis sur 2007 donc cela ne m'étonne pas que si vous avez un excel récent il y ait des problèmes de compatibilité. Ci-joint, une image du résultat de la macro de robert dans un fichier vierge.
 

Pièces jointes

  • Sans titre.jpg
    Sans titre.jpg
    41.2 KB · Affichages: 32
  • Sans titre.jpg
    Sans titre.jpg
    41.2 KB · Affichages: 34

Discussions similaires

Réponses
3
Affichages
127
Réponses
7
Affichages
374

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 765
Messages
2 091 892
Membres
105 084
dernier inscrit
lca.pertus