Macro Complexe Copier-Coller en valeur

albane_44

XLDnaute Nouveau
Bonjour à tous!

Dans le cadre de mon travail, j'ai à réaliser un fichier de chiffrage quelque peu automatisé et je bloque dans le développement de ma macro.

Voici le principe d'utilisation de ce fichier appelé "FichierExemple2".

Ce fichier composé de 2 onglets, permet de compléter le 2ème onglets à partir du 1er.
Une fois le 1er onglet complété, l'activation de la macro permet de :"

1) ouvrir un fichier similaire sur un serveur qui se compose que des 4 derniers onglets,
2) Copier en valeur toutes les cases en jaunes pâle du 2ème onglets du FichierExemple, et les coller en valeur dans le fichier ouvert en 1).
3) Une fois cette manipulation effectuée, enregistrer ce nouveau fichier (nom+chemin).

Je pense maitriser le point 1) et 3), mais rencontre un soucis dans le point 2).

Es ce que mon code est trop lourd? long à exécuter?


Merci de votre aide!


Albane
 

Pièces jointes

  • FichierExemple2.xlsm
    109.3 KB · Affichages: 36
Dernière édition:

thebenoit59

XLDnaute Accro
Re : Macro Complexe Copier-Coller en valeur

Bonjour Albane.
Un petit conseil, supprime le fichier du site, crée en un nouveau où tu supprimeras les différentes données permettant d'avoir des informations sur ton entreprise (voir ton code).
Sinon, oui ton code est assez lourd, je regarderai ce que je peux faire, si tu n'as pas de réponses entre deux.
 

thebenoit59

XLDnaute Accro
Re : Macro Complexe Copier-Coller en valeur

Je peux te proposer cette simplification :
Code:
' Copie en valeurs onglet "Détail WU"
Dim fWU As Worksheet, rWU As Range
    Set fWU = WbkS.Worksheets("Détail WU")
    Set rWU = fWU.Range("H10:W26,AJ10:AY26,H29:W45,AJ29:AY45,H47:W63,AJ47:AY63,H66:W82,AJ66:AY82,H84:W100,AJ84:AY100,H102:W118,AJ102:AY118")

For Each cell In rWU
    cell.Value = cell.Value
Next cell

Je suppose par ailleurs que tu disposes de formules dans les colonnes H, W, AJ et AY que tu souhaites conserver ?
Sinon faire un copier coller valeurs sur les colonnes complètes iraient plus vite.
Si tu disposes de valeurs, peux-tu transmettre un exemple de feuille reprenant les sous.totaux ?
 

albane_44

XLDnaute Nouveau
Re : Macro Complexe Copier-Coller en valeur

Bonjour!

MErci de ta réponse rapide. Je viens de modifier ma PJ en enlevant certaines données sensibles.

Pour répondre à ta question en essayant d'être claire, je n'arrivais pas à copier coller en valeur les cellules en jaune pâle des colonnes D, I et L (onglet"chiffrage"), vers ce même onglet du fichier final client. La raison à cela est que ces cellules contiennent des formules que je ne peux pas effacer, du coup quand je les copiais collais, j'obtenais un message de type "Action OLE en cours..." et même en décochant cette option cela ne changeait rien si ce n'est beuger le fichier entier.
Du coup ma solution fut de créer les colonnes U, Z et AC (cellule TEXTE) , sortent de colonnes "tampons" dans lesquelles je copie colle D, I et L (juste les cellules en jaune pâle), puis je recopie D, I et L (juste les cellules en jaune pâles) que je colle dans mon fichier client final. Ce fichier final est protégé dans son fond et forme sauf pour les cellules en jaune pâles... JE ne peux donc pas effectuer de copier/coller de colonne, classeur, onglet... Ce qui répond à ta deuxième question.

JE vais essayer de faire une simulation en valeurs afin d'avoir les sous-totaux.

MErci!
 

albane_44

XLDnaute Nouveau
Re : Macro Complexe Copier-Coller en valeur

Bonjour!

MErci de ta réponse rapide. Je viens de modifier ma PJ en enlevant certaines données sensibles.

Pour répondre à ta question en essayant d'être claire, je n'arrivais pas à copier coller en valeur les cellules en jaune pâle des colonnes D, I et L (onglet"chiffrage"), vers ce même onglet du fichier final client. La raison à cela est que ces cellules contiennent des formules que je ne peux pas effacer, du coup quand je les copiais collais, j'obtenais un message de type "Action OLE en cours..." et même en décochant cette option cela ne changeait rien si ce n'est beuger le fichier entier.
Du coup ma solution fut de créer les colonnes U, Z et AC (cellule TEXTE) , sortent de colonnes "tampons" dans lesquelles je copie colle D, I et L (juste les cellules en jaune pâle), puis je recopie D, I et L (juste les cellules en jaune pâles) que je colle dans mon fichier client final. Ce fichier final est protégé dans son fond et forme sauf pour les cellules en jaune pâles... JE ne peux donc pas effectuer de copier/coller de colonne, classeur, onglet... Ce qui répond à ta deuxième question.

JE vais essayer de faire une simulation en valeurs afin d'avoir les sous-totaux.

MErci!
 

thebenoit59

XLDnaute Accro
Re : Macro Complexe Copier-Coller en valeur

Les colonnes dont tu me parles ne correspondent pas au code que tu as écris pour le moment.
Avec le fichier que j'ai sous les yeux, quelles colonnes souhaites-tu exporter et peux-tu transmettre un fichier client également pour travailler sur le code ?
 

albane_44

XLDnaute Nouveau
Re : Macro Complexe Copier-Coller en valeur

voila j'ai enlevé le code inutile car concerne des onglets que j'ai enlevé pour l'exemple. Le principe reste le même et est à appliquer pour 4 onglets au lieu de 1 dans l'exemple ("Chiffrage").
Pour ce qui est du fichier client, il s'agit exactement du même fichier que Exemple3.xlsm fourni en exemple, à la seule différence qu'il est intégralement protégé par le client dans son fond et sa forme, accès au VBA, et que l'onglet "Tableau Chiffrage" n'existe pas... La seule opération possible est la copie en valeurs dans les cellules en jaune pâle.
Il est donc impossible d'y insérer du code.
 

Pièces jointes

  • FichierExemple3.xlsm
    106 KB · Affichages: 30
  • FichierExemple3.xlsm
    106 KB · Affichages: 29

thebenoit59

XLDnaute Accro
Re : Macro Complexe Copier-Coller en valeur

Je suis parti sur le fait que tu as le même nombre de cellules en pâle que le fichier transmis.
J'ai enregistré l'adresse des cellules avec un fond pâle et la valeur correspondante dans un tableau.
Modifie le chemin d'accès à ton fichier client, ou modifie le code pour proposer l'ouverture d'un fichier que tu choisis.
Une fois ouvert les cellules se copient.
Je n'ai pas vraiment testé le code, et donc tu auras sans doute des erreurs, mais tiens moi au courant si ça correspond déjà à ton objectif.
 

Pièces jointes

  • FichierExemple3.xlsm
    90.2 KB · Affichages: 48
  • FichierExemple3.xlsm
    90.2 KB · Affichages: 41

albane_44

XLDnaute Nouveau
Re : Macro Complexe Copier-Coller en valeur

Cher Benoit, je peux dire à tout le monde que tu es "The Benoit du 59"! car je viens de tester ton code, est celui-ci fonctionne à merveille!!
Waouuu un grand merci pour ce très beau cadeau à mon retour de vacances!

Si cela ne t'ennuies pas je ne clôture pas tout de suite cette discussion afin de créer toute ma macro, au cas ou j'ai des questions supplémentaires!

Dans l'attente je te souhaite une très belle soirée!

<3
 

albane_44

XLDnaute Nouveau
Re : Macro Complexe Copier-Coller en valeur

J'ai déjà un problème d'adaptation à mon fichier source :

'--- On enregistre les données dans un tableau 1ère colonne adresse, 2ème colonne valeur
Dim a(1 To 305, 1 To 2)
i = 1
For Each Cell In Range(Cells(1, 1), Cells(LLig, 13))
If Cell.Interior.Color = Couleur Then
a(i, 1) = Cell.Address -> J'ai une erreur ici visiblement!!
a(i, 2) = Cell.Value
i = i + 1
End If
Next Cell

On me dit que L'indice n'appartient pas à la séléction (Erreur d'exécution '9')
A quoi correspond le tableau dont tu parles en intitulé de ce passage de la macro?

Merci de ton aide.
 

thebenoit59

XLDnaute Accro
Re : Macro Complexe Copier-Coller en valeur

Bonsoir Albane44.

Je te joins un autre fichier qui sera plus simple.

En ce qui concerne le tableau je te conseille de chercher sur internet des informations complémentaires que je ne pourrai t'expliquer réellement. Il s'agit d'un ensemble de données que tu gardes en mémoire, sous forme de tableau.

Je te propose une variante avec un dictionary.
Change juste ta zone de devis à cet endroit:
Code:
For Each Cell In Range(Cells(1, 1), Cells(LLig, 13))

Normalement ça devrait fonctionner correctement sans erreur.
 

Pièces jointes

  • FichierExemple3.xlsm
    89 KB · Affichages: 38
  • FichierExemple3.xlsm
    89 KB · Affichages: 35

albane_44

XLDnaute Nouveau
Re : Macro Complexe Copier-Coller en valeur

Je pense que ta 1ère solution était la bonne, mais c'est juste que lorsque je veux l'adapter à mon fichier qui comporte des tableaux bien plus long en données en jaune pâle, ca ne veut plus fonctionner.
Il y a un paramètre que dois oublier d'adapter, mais lequel? ce fameux LLig ? 13 ?
 

néné06

XLDnaute Accro
Re : Macro Complexe Copier-Coller en valeur

Bonjour à tous,

Ok je veux bien, mais je ne comprend pas cette ligne de code envoyée :

For Each Cell In Range(Cells(1, 1), Cells(LLig, 13))

Pour chaque cellule de la plage (ligne1 colonne 1, à numéro de la dernière ligne écrite de la plage et de la colonne 13(col M)))

A+

René
 

albane_44

XLDnaute Nouveau
Re : Macro Complexe Copier-Coller en valeur

En fait je pense que mon erreur vient de la, plus haut tu marques :

"J'ai enregistré l'adresse des cellules avec un fond pâle et la valeur correspondante dans un tableau."

Mais comment enregistre t on l'adresse d'une cellule, et où? Forcément si je rajoute des cellules en jaunes pâles, elles ne sont pas enregistrées!

;)
 

Discussions similaires

Réponses
12
Affichages
227