Modification de macro copier coller

Ophé

XLDnaute Junior
Bonjour encore une fois le forum,

Encore un vrai besoin sur une macro, j'ai une macro qui fait un copier coller d'une page à lautre selon une condition.

Cette macro me conviens, je dois juste pouvoir modifier le collage en "collage spécial Valeurs"; et je voudrais utiliser cette même macro pour un copier coller d'un classeur à l'autre : mon 1er classeur s'appelle Extraction et la feuille s'appelle également Extraction. Mon classeur d'arrivée est celui utilisé depuis le début de la macro et la feuille s'appelle VTE QUERY.

Je met en couleur les endroits qu'il faut modifier (je pense en tout cas)


'Mettre en calcul sur ordre afin de figer la cellule AC1 de VTE
Application.Calculation = xlCalculationManual
'balayage de la colonne AA feuille Extraction de la ligne 6 a la derniere ligne non vide
For n = 6 To Sheets("Extraction.xlsx").Range("AA65536").End(xlUp).Row
'si contenu cellule (colonne AA) > AC1 (condition du format conditionnel)
If Sheets("Extraction.xlsx").Range("AA" & n) > Sheets("VTE QUERY").Range("AC1") Then
'copie de la ligne sur la derniere ligne non vide de la feuille VTE QUERY
Sheets("Extraction.xlsx").Range("A" & n & ":AB" & n).Copy Destination:=Sheets("VTE QUERY").Range("A65536").End(xlUp).Offset(1, 0)
End If
Next n
'retour au calcul automatique
Application.Calculation = xlCalculationAutomatic




Merci de votre aide.

Ophé
 

youky(BJ)

XLDnaute Barbatruc
Re : Modification de macro copier coller

Bonjour Ophé,
Non testé, mais ca doit le faire pour copier que les valeurs
Pour la 2eme question j'ai encore rien fait........

Code:
'Mettre en calcul sur ordre afin de figer la cellule AC1 de VTE
Application.Calculation = xlCalculationManual
'balayage de la colonne AA feuille Extraction de la ligne 6 a la derniere ligne non vide
For n = 6 To Sheets("Extraction.xlsx").Range("AA65536").End(xlUp).Row
'si contenu cellule (colonne AA) > AC1 (condition du format conditionnel)
If Sheets("Extraction.xlsx").Range("AA" & n) > Sheets("VTE QUERY").Range("AC1") Then
'copie de la ligne sur la derniere ligne non vide de la feuille VTE QUERY
lg = Sheets("VTE QUERY").Range("A65536").End(xlUp).Row + 1
Sheets("VTE QUERY").Range("A" & lg & ":AB" & lg).Value = _
Sheets("Extraction.xlsx").Range("A" & n & ":AB" & n).Value
End If
Next n
'retour au calcul automatique
Application.Calculation = xlCalculationAutomatic
 

youky(BJ)

XLDnaute Barbatruc
Re : Modification de macro copier coller

Re:
Attention nom onglet avec .... .xlsx ,,,,j'en doute
Verifie toutes les extentions dans ma macro....
Rien de testé encore, les 2 fichiers doivent être dans le mm répertoire
Bonne chance

Dim Wb As Workbook
Application.Calculation = xlCalculationManual
fichier = ThisWorkbook.Path & "/Exctraction.xlsx"
Set Wb = GetObject(fichier)
For n = 6 To Wb.Sheets("Extraction").Range("AA65536").End(xlUp).Row
If Wb.Sheets("Extraction").Range("AA" & n) > Sheets("VTE QUERY").Range("AC1") Then
lg = Sheets("VTE QUERY").Range("A65536").End(xlUp).Row + 1
Sheets("VTE QUERY").Range("A" & lg & ":AB" & lg).Value = _
Wb.Sheets("Extraction").Range("A" & n & ":AB" & n).Value
End If
Next n
Wb.Close
Application.Calculation = xlCalculationAutomatic
 

Ophé

XLDnaute Junior
Re : Modification de macro copier coller

Bonjour,

J'ai testé vos macros, le copier coller de valeurs fonctionne, merci beaucoup c'est tout à fait ce qu'il me fallait; mais le fait de passer de extraction à VTE QUERY ne fonctionne pas; excel me dit que le beug vient de :

"For n = 6 To Wb.Sheets("Extraction").Range("AA65536").End(xlUp) .Row"

J'ai vérifier ma feuille se nomme bien extraction, je ne sais pas comment faire?

Je joins un fichier reduis de l'extraction (fichier départ) et de VTE QUERY (fichier d'arrivée).

Ma macro doit être enregistrée dans le query car le fichier extraction change tout le temps.

Merci encore

Ophé
 

Pièces jointes

  • Extraction.xls
    27 KB · Affichages: 61
  • Extraction.xls
    27 KB · Affichages: 69
  • Extraction.xls
    27 KB · Affichages: 60
  • QUERY essai.xls
    45.5 KB · Affichages: 89

youky(BJ)

XLDnaute Barbatruc
Re : Modification de macro copier coller

Re bonjour,
/ au lieu de \ hihi
>fichier = ThisWorkbook.Path & "/Exctraction.xlsx"
à remplacer par
fichier = ThisWorkbook.Path & "\Exctraction.xlsx"
Vérifie bien l'extention .xlsx ou .xls
Je vois que cela, sinon que les 2 fichiers doivent être dans le mm répertoire
le fichier envoyé est bien en .xls et si c'est le cas enleve le x à xlsx
Dans tes macros j'ai vu ......MonWbks = Me.ComboBox1.Value & ".xlsm"
encore une nouvelle extention donc bien surveiller..
 

Ophé

XLDnaute Junior
Re : Modification de macro copier coller

Re,

je viens de tester sous plusieurs "coutures" cette macro, elle commence effectivement de fonctionner, mais il reste un problème, seulement la dernière ligne se copie sur VTE QUERY hors je voudrais que toutes les lignes ayant un numéro supérieur à celui inscrit en AC1 soient copiées??

Comment puis-je faire??

aussi j'ai supprimé : "Wb.Close"
car mon fichier doit rester ouvert après le transfert.

Merci pour l'aide, et merci d'avance pour la suite.

ophé
 

Ophé

XLDnaute Junior
Re : Modification de macro copier coller

Je joins 2fichiers avec quelques explications car il m'a été reproché un manque de clarté.

Cdlt

Ophé
 

Pièces jointes

  • Extraction.xls
    33.5 KB · Affichages: 142
  • Query.xls
    24 KB · Affichages: 68
  • Extraction.xls
    33.5 KB · Affichages: 155
  • Extraction.xls
    33.5 KB · Affichages: 156

youky(BJ)

XLDnaute Barbatruc
Re : Modification de macro copier coller

Voici la rectif
Tu peux effacer AC1 je calcul en macro, plus besoin du calcul manuel
J'ai testé ça marche

Code:
Sub copie()
Dim Wb As Workbook
'Application.Calculation = xlCalculationManual
nf = [Large(AA:AA, 1)]
fichier = ThisWorkbook.Path & "\Extraction.xls"
Set Wb = GetObject(fichier)
With Workbooks(ThisWorkbook.Name)
lg = .Sheets("VTE QUERY").Range("AA65536").End(xlUp).Row + 1
For n = 6 To Wb.Sheets("Extraction").Range("AA65536").End(xlUp).Row
If Wb.Sheets("Extraction").Range("AA" & n) > nf Then
.Sheets("VTE QUERY").Range("A" & lg & ":AB" & lg).Value = _
Wb.Sheets("Extraction").Range("A" & n & ":AB" & n).Value
lg = lg + 1
End If
Next n
End With
'Wb.Close
'Application.Calculation = xlCalculationAutomatic
End Sub
 

Ophé

XLDnaute Junior
Re : Modification de macro copier coller

Bonjour le forum,

Le forum, ou youki pourra peut-être encore m'aider sur le même genre de macro :

je veux effectuer le même transfert que dans la macro précédente mais le transfert se ferais cette fois-ci de VTE QUERY vers un fichier nommé 'Ventes commerciaux' dans la feuilles 'Ventes totales'.

J'ai tenté ceci mais j'ai un beug :

Dim Wb As Workbook
'Application.Calculation = xlCalculationManual
nf = [Large(AA:AA, 1)]
fichier = ThisWorkbook.Path & "\Ventes commerciaux.xlsx"
Set Wb = GetObject(fichier)
With Workbooks(ThisWorkbook.Name)
lg = .Sheets("Ventes totales").Range("AA65536").End(xlUp).Row + 1
For n = 6 To Wb.Sheets("VTE QUERY").Range("AA65536").End(xlUp).Row
If Wb.Sheets("VTE QUERY").Range("AA" & n) > nf Then
.Sheets("Ventes totales").Range("A" & lg & ":AB" & lg).Value = _
Wb.Sheets("VTE QUERY").Range("A" & n & ":AB" & n).Value
lg = lg + 1
End If
Next n
End With
'Wb.Close
'Application.Calculation = xlCalculationAutomatic

Pouvez-vous m'aider, merci d'avance.

Ophé
 

Discussions similaires

Statistiques des forums

Discussions
312 392
Messages
2 088 004
Membres
103 695
dernier inscrit
acimi