Modifier la plage de copie de macro et coller dans les feuilles de calcul

Bonjour les partisans d'Excel.

Comment puis-je modifier ce code pour qu'il fonctionne sur mon classeur ci-dessous. Cela ne semble pas fonctionner correctement.

Soyez patient avec moi car ma langue maternelle est l'anglais.

Sub Copy_Extract()
 Dim ARR1(1 To 14)
ARR1(1) = "10-YEAR US"
ARR1(2) = "SILVER-XAG"
ARR1(3) = "GOLD-XAU"
ARR1(4) = "RUB"
ARR1(5) = "CAD"
ARR1(6) = "CHF"
ARR1(7) = "MXN"
ARR1(8) = "GBP"
ARR1(9) = "JPY"
ARR1(10) = "EUR"
ARR1(11) = "BRL"
ARR1(12) = "NZD"
ARR1(13) = "ZAR"
ARR1(14) = "AUD"

Application.ScreenUpdating = False
With Sheets("Copy_Extract")
DT = .ListObjects (1) .DataBodyRange (1, 2)
    For i = 1 To 14
       If DT <> Sheets (ARR1 (i)). ListObjects (1) .DataBodyRange (1, 1) Then
         Sheets (ARR1 (i)). Range ( "A2: I2" ) .ListObject.ListRows .Add (1)
          For j = 1 To 7
              Sheets (ARR1 (i)). ListObjects (1) .DataBodyRange (i, j) = .ListObjects (1) .DataBodyRange (i, j + 1)
         Next
              Sheets (ARR1 (i)). ListObjects (1) .DataBodyRange (i, 9) = .ListObjects (2) .DataBodyRange (i, 1)
         End If
         With Sheets(ARR1(i))
            .Range ( "A3: I3" ) .Copy
            .Range ( "A2: I2" ) .PasteSpecial Paste: = xlPasteFormats
          End With
    Next
  .[A17].Select
  Application.ScreenUpdating = True
End With
End Sub

Je ferai de mon mieux pour l'expliquer étape par étape ...

# 1 Sur l'onglet "Copy_Extract". J'ai 14 lignes de données, de la ligne 2 à la ligne 15.
Les données sont mises à jour sur les mêmes lignes sur les mêmes cellules sur une base hebdomadaire.

# 2 Chaque ligne de données représente une feuille de calcul.
Donc en d'autres termes:
14 lignes dans l'onglet "Copy_Extract" représentent 14 feuilles de calcul ...

Les données de la ligne 2 «BILLETS AU TRÉSOR DES 10 ANS AUX ÉTATS-UNIS - CHICAGO BOARD OF TRADE» sont transférées dans l'onglet «10 ANS aux États-Unis».
Rangée # 3 «SILVER - COMMODITY EXCHANGE INC.» les données sont transférées dans l'onglet "SILVER-XAG"
Rangée 4 «GOLD - COMMODITY EXCHANGE INC.» les données sont transférées dans l'onglet "GOLD-XAU". Etc. J'espère que vous avez la photo.

Je vais donner un exemple de la ligne n ° 2, à copier,
Une fois que vous avez compris l'exemple. Tout s'applique aux autres lignes de l'onglet "Copy_Extract".

Maintenant
Comment puis-je créer une macro pour:
# 1 Insérez une ligne vide «Toujours», dans la ligne 2 de l'onglet «10 ANS US». "Sans déplacer le graphique". Ensuite.
# 2 Copiez les données de l'onglet "Copy_Extract" sur les cellules B2, C2, D2, E2, F2, G2, H2 et I2. ensuite
# 3 Collez les données "B2, C2, D2, E2, F2, G2, H2 et I2 dans l'onglet" 10-YEAR US "dans A2, B2, C2, D2, E2, F2, G2 et I2
Remarque: Les dernières données ne sont pas collées dans "H2" dans l'onglet "10 ANS US".
# 4 Pour créer une formule dans l'onglet "10 ANS US" dans H2, qui est "= F2-G2"
# 5 La macro doit être conçue de manière à ne pas dupliquer les données si elle n'a pas été mise à jour de l'onglet "Copy_Extract" à l'onglet "10-YEAR US".

C'est tout. L'espoir est clair à comprendre.

Merci

Salut CorriedToppin,

pas encore très à l'aise avec la programmation des tableaux structurés mais ceci fonctionne.
J'ai renommé les tableaux de tes feuilles 'RUB', 'CAD', 'CHF',... en 't_1', 't_2',..

Sub Copy_Extract()
'
Application.ScreenUpdating = False
'
For x = 1 To 14
    If CDate(Range("t_01").Item(x, 2)) <> CDate(Range("t_" & x).Item(1, 1)) Then
        Range("t_" & x).Rows(1).Insert CopyOrigin:=xlFormatFromRightOrBelow
        For y = 1 To 7
            Range("t_" & x).Item(1, y) = IIf(y = 1, Format(Range("t_01").Item(x, y + 1), "[&-040C]dd/mm/yyyy"), Range("t_01").Item(x, y + 1))
        Next
        Range("t_" & x).Item(1, 9) = Range("t_02").Item(x, 1)
    End If
Next
Worksheets("Copy_Extract").[A17].Select
'
Application.ScreenUpdating = True
'
End Sub
4corried.zip (1.44 Mo)

À tester...


A+

Salut curulis57,

Merci pour votre réponse rapide.

Le fichier d'exemple fonctionne très bien. Mais je ne sais pas pourquoi j'obtiens une erreur sur le fichier d'origine.

Il déclare: «Microsoft Visual Basic:

Erreur d'exécution '1004':

Échec de la méthode 'Range' de l'objet '_Global' ".

Veuillez voir la photo.

copy extract

Si vous êtes à l'aise, vous pouvez télécharger le fichier complet pour voir le problème, car le fichier est trop volumineux pour être téléchargé dans ce forum.

Merci d'avance curulis57

https://ln2.sync.com/dl/c2db57f60/9kxnetgc-depbifqs-sjjw9q6n-synbhk5h

Salut curulis57

Je ne suis pas sûr que vous ayez reçu mon message ...

Salut Corriedtoppin,

si, je l'ai reçu et j'ai chargé ton fichier.
Je regarde cela cet après-midi.


A+

Pas de problème curulis57.

Merci.

LoL je me sens un peu anxieux est allé je n'ai pas entendu parler de vous.

Bonjour,

Ma contribution en pièce jointe.

Remarquer la nouvelle formulation des noms dans le Gestionnaire de Noms

La Gestion des formules colonnes 8

Fichier à télécharger sous ce lien

Nota : Je ne me suis pas occupé de #5 : Il faut bien que je t'en laisse un bout ! :)

A+

Salut Corrie,
Salut Galopin,

@Corrie, je suis sur ton fichier : patience, please !
Pourquoi supprimes-tu systématiquement la feuille 'Extract' à chaque opération ? C'est obligatoire ?

@Galopin, ton lien semble inopérant, du moins pour moi. Dommage, j'espérais apprendre de ton expérience en matière de tableaux structurés...


A+

@Galopin, ton lien semble inopérant

Je ne pense pas je l'ai testé dans les 2 cas. (ouverture directe et téléchargement) Yapa de problème.
D'autres rencontrent-il la même difficulté ?

Je n'ai pas travaillé sur les autres macros car ce n'était pas dans la question... Cependant (dans mon classeur) la macro #2 peut s'optimiser comme suit :

Sub CopyPasteDataFromExtractTab()
[Extract].Copy [TData]
End Sub

Je donne également un lien pour le même fichier fortement compressé (en xlsb+zip) :

http://pagesperso-orange.fr/galopin01/Perso21/COT_TRADING_CLASSES_VG.zip

A+

Bonjour Curulis57 et salut Galopin01

Merci pour votre avis.

J'ai des problèmes d'esprit. Il semble que je me suis retrouvé au milieu d'un problème de classeur ... et il semble que je doive prendre une décision pour choisir la meilleure personne ...

J'ai le cœur brisé sur la façon dont les autres peuvent voir nos discussions sur ce forum et quelles sont les raisons pour lesquelles nous sommes ici en premier lieu?

Comment tout le monde peut-il en bénéficier?

Cela dit ... L'approche la plus respectueuse est de lire les points de vue et les opinions de Curulis57.

Et en même temps, pensez à Galopin ...

Curulis57 a fait un excellent travail au début sur l'exemple "fichier"! Cependant, extrayez le code et collez-le dans le classeur complet. une erreur a été trouvée.

D'autre part. Le travail de Galopin est génial! Pour une raison étrange. Il manque une pièce du puzzle lorsque la macro est exécutée. Les données de la feuille "Copy_Extract" de la colonne "J" ne sont pas collées dans l'en-tête "Price" de la colonne "I". Sur les feuilles existantes.

J'espère que vous comprenez et que tout va bien. Aimer tout...

Je comprend, mais c'est un peu une histoire de fou ! Dans ton fichier original il y a deux tableaux structurés contigus.

Moi j'appelle un mariage incestueux. Et je me dépêche de briser cette union contre nature... En insérant une colonne masquée entre les deux.

Alors je ne sais pas lequel des 2 à eu cette idée tordue, mais moi ça me donne envie de prendre l'un pour taper sur l'autre ! Le premier pour avoir fait ça, le second pour non assistance à... !

Hum... Ben YAKA intégrer cette colonne dans TData et ça va passer tout seul... Bon on verra demain. Na ! Parce que Galopin il à passé l'age d'aller au Macumba hein...

Bonne nuit !

J'adore ta façon de t'exprimer, Corrie, tout en English touch...

@Galopin : j'ai traduit ton brillant raccourci en :

Range("t_01").Value = Range("Extract").Value

... pareil !

Je manque de temps pour terminer maintenant, désolé... mais le résultat, ici, me semble correct quoique j'aie sérieusement modifié, à ma sauce et selon mes nouvelles connaissances des tableaux structurés, certaines macros.

Je reprends demain...
Sorry, so long, Corrie !


A+

Je suis heureux de vous voir tous vous serrer la main et vous caresser le dos. https://giphy.com/gifs/nba-hug-cle-1fiF1PX073unVQTccz/fullscreen

et du champagne éclatant. https://giphy.com/gifs/vinyl-hbo-season-1-popping-bottles-xT9GEDy5eIjBnCKiEU/fullscreen

Nous ne pouvons pas faire cela sans vous tous. Comme

Galopin01 suggéré. "C'est comme un mariage". Mais avec cet arrangement. Je l'appelle, un partenariat. "Bienvenue dans l'équipe". Lol.

L'heure de mon côté est 18h30.

Ayez un repos béni

Bonjour,

C'est pas grave dans ma famille on aime bien les orages... C'est ce qui fait la nuit qui suit plus fabuleuse !

De toute façon :

sh6 1

Après ces considérations hautement philosophique...

Voici ton fichier modifié :

http://pagesperso-orange.fr/galopin01/Perso21/COT_TRADING_CLASSES_VG1.xlsm

Nota : le deuxième tableau à la noix à été supprimé et intégré à TData

Le CodeName de cette feuille a été renommé WsCE

Les 2 macros ont été revues en conséquence.

Si tu veux avoir des graphiques dynamiques je te conseille d'utiliser toute la plage des données.

A charge pour toi d'archiver ailleurs (dans une autre feuille) celles qui commence à dater...

A+

Salut Corrie,
Salut Galopin,

Ton fichier avec mes connaissances actuelles des tableaux structurés et ma compréhension de ton fichier.
Ne sachant pas trop où tu vas pêcher les infos du 2e tableau de la feuille 'Copy_Extract' décrié à juste titre par Galopin, rien dans mon code n'intervient dans sa mise à jour.

@Galopin : découvert un truc que tu devais connaître depuis longtemps. La "construction" d'un nom de tableau via une variable - Range("t_" & x) -ne fonctionne que dans un Module général !

Pour faire passer ton fichier, j'ai du réduire tous les tableaux à 50 lignes.

9corrie.zip (1.19 Mo)

À tester...


A+

Bonjour Curulis,

Les noms de tableaux structurés bien qu'ils apparaissent dans le Gestionnaire de Noms ne sont pas des noms en tant que tel.

D'ailleurs il est impossible de les lister si tu essaies cette macro dans un classeur qui contient des tableaux structurés :

Sub test()
Dim o
For Each o In ActiveWorkbook.Names
   Debug.Print o.Name
Next
End Sub

... ils n'apparaissent pas. Ce sont donc bien des objets de classeur qui obéissent à des règles particulières.

Pas étonnant dans ces conditions que tu ne puisses pas les créer à partir d'une feuille.

A+

Effectivement, Galopin, ta macro ne donne rien...
Quand on le sait, ça roule...

Merci à toi,


A+

Bonjour galopin01 & curulis57.

Merci pour vos efforts et votre soutien.

J'ai vu les deux fichiers. J'ai vu l'effort que vous avez tous deux déployé. En retour.

Votre humble serviteur attend la demande de mon maître.

Je ne sais pas si mes deux maîtres sont d'accord. Votre serviteur voit des forces et une semaine égales sur les deux fichiers.

Le fichier Master Qalopin01 est puissant. les compétences de maître ont terminé la tâche, avec un clic d'éclairage sur le bouton. Il n'a pas réussi à faire face à la colonne «I» «Copy_Extract» et à coller des données dans les autres onglets.

Maître Qalopin01 recommande à son serviteur d'effectuer des graphiques dynamiques sur son classeur. Par conséquent, son serviteur est au premier niveau en compétences excellentes ...

D'autre part. Master Curulis57. Un maître, qui prend son temps et réfléchit au processus. Déchaînez le pouvoir des dieux. Avec une puissance extrême, toutes les cellules sont correctement collées dans toutes les cellules. Avec sa puissance ultime, même les codes ne peuvent pas arrêter son processus répété. Les mêmes données sont collées encore et encore. Une fois que le bouton est déclenché.

Comment mes maîtres peuvent-ils résoudre ce problème? Que voulez-vous que votre humble serviteur fasse?

Merci d'avance

Salut Corrie,

une question : d'où viennent les données des colonnes [I:J] de la feuille 'Copy_Extract' ???? Where do these data come from?

image

Galopin a raison : l'idéal serait de n'avoir qu'un seul tableau !!


Have a good day!

The data comes from Investments.com.

Please see the photo below. Sorry for the late response...

9investing.zip (52.29 Ko)

Rechercher des sujets similaires à "modifier plage copie macro coller feuilles calcul"