Copier les valeur d'une plage avec condition

Marypen

XLDnaute Nouveau
Bonsoir à tous,
Je voudrais, en ouvrant mon fichier, executer une macro qui copie les valeurs des colonnes E et F si E1=1, mais sans figer E1 et E2 et jusque la ligne equivalent à la derniere ligne de B. et idem pour les paires de colonnes suivantes .
Un petit fichier joint pour etre plus clair.

Grand merci d'avance
Marypen
 

Pièces jointes

  • Copier valeur plage avec condition.xlsm
    69.8 KB · Affichages: 58

_Thierry

XLDnaute Barbatruc
Repose en paix
Re : Copier les valeur d'une plage avec condition

Bonjour MaryPen, le Forum

En fait si j'extrapole ta demande, c'est juste parce ton onglet "Point Bis" est rempli de Formules SommeProd et que lorsque tu fais tourner d'autre macros (non-présentes dans ton classeur de Test) tout ralentit.

C'est bien ca ton problème ?

En fait c'est un éléphant pour boucher un trou de souris si on fait une macro pour PasteValueOnly pour écraser tes formules SommeProd si dans l'entête de Colonne il y a la présence d'un "1"...

As tu essayé de BLOQUER le Calcul automatique d'Excel ? (Lorque l'on fait ca on peux faire calculer manuellement en pressant F9) Ce devrait considérablement accélérer tes Macros...

On peut le Faire par Programmation avant et après chaque macro avec l'instruction
EN DEBUT => Application.Calculation = xlCalculationManual
EN FIN => Application.Calculation = xlCalculationAutomatic

On peut aussi optimiser en cumiulant
With Application
.Calculation = xlCalculationManual​
.ScreenUpdating = False '(Remettre à True en sortie)
End With

Sinon si vraiment il n'y a pas de progrès, on peut envisager de faire ce fameux PasteValueOnly sur lui-même mais là je n'ai pas compris ceci :
Si(E1=1,copier valeurs E3:F12 sur E3:F12;rien)
Qu'entends-tu par ce "Rien" ? Ou peut-être je n'ai "Rien" compris :D

Bon Dimanche
@+Thierry
 

Marypen

XLDnaute Nouveau
Re : Copier les valeur d'une plage avec condition

Bonjour Thierry
Effectivement mon problème est bien le ralentissemeent de mes macros non présentes, donc tu n"as pas "Rien" compris loin de là.
Pour ce fameux "Rien", j'ai juste voulu dire pas d'action donc pas de copie valeur sur les plages de la ligne 1 contenant autre chose que 1.
Par contre, moi j'ai pas compris grand chose, Bloquer le calcul automatique c'est quoi, ou, comment.
Et les codes que tu me donnes, ou dois-je les mettre.
Sorry mais je suis novice en vba
A plus
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re : Copier les valeur d'une plage avec condition

Bonsoir MaryPen, le Forum

En fait à tout moment on peut faire cette manip "Calcul du Classeur Manuel" dans Excel, c'est une option de base. (Sous 2007 Aller dans le Bouton Office, puis Options Excel, rubrique "Formules" , tu trouveras Mode de Calcul ...)

Maintenant on peut le faire par programmation, d'où mes extraits de code...

Tu tu as un Code qui fait.... Huuum je ne sais pas moi,

Sub MaMacro

Blah Blah Je Sélectionne Blah Blah Je Copie, Blah blah Je Colle, blah blah...

End Sub

Tu peux inserrer mon code comme suit

Sub MaMacro
With Application
.Calculation = xlCalculationManual
.ScreenUpdating = False '(Remettre à True en sortie)
End With

Blah Blah Je Sélectionne Blah Blah Je Copie, Blah blah Je Colle, blah blah...

With Application
.Calculation = xlCalculationAutomatic
.ScreenUpdating = True'
End With

End Sub



C'est tout, ce n'est pas vraiment compliqué... Si tu as plusieurs macros, tu peux le faire à chacune, ou encore on pourrait envisager de mettre une à WorkBook_Open et l'autre à WorkBook_BeforeClose...

Astuce! Quand on est en Mode Calcul Manuel, il faut Presser la touche de Fonction "F9" pour forcer Excel à calculer.

Bonne soirée
@+Thierry



 

Marypen

XLDnaute Nouveau
Re : Copier les valeur d'une plage avec condition

Salut Thierry
Ca fonctionne nickel sur mes 2 macro de copie qui se trouvent dans mon classeur mais sur les feuilles d'encodage (ce sont un bon de commande et une facturation) les calculs simples comme Qté*Prix restent lent, n'est-il pas possible de faire le meme genre de code pour ces feuilles.
Merci
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re : Copier les valeur d'une plage avec condition

Bonsoir Marypen

Qu'est-ce des feuilles d'encodages ? Il y a des macro évènementielles dans les feuilles ?

Si c'est ça, oui tu peux faire idem.

Bonne soirée
@+Thierry
 

Marypen

XLDnaute Nouveau
Re : Copier les valeur d'une plage avec condition

Ce sont 2 feuilles qui servent à alimenter la feuille detail cdes de mon fichier via macro d'enregistrement.
Pour etre plus clair, dans la feuille bon de cde (qui ne se trouvent pas dans mon fichier ci dessus) je une cde d'articles puis j'indique la qté et un calcul s'effectue Qté * prix, ensuite lorsque ma cde est complete je clique sur ma macro qui enregistre les données dans ma feuille detail cdes. Avec le code cette macro d'enregistrement fonctionne nickel mais les calculs Qté* prix sont lent. J'imagine que tu avais compris le fonctionnement de mon fichier j'espere que j'ai répondu à tes questions.Si je peux le faire, comment dois je faire. Désolé d'etre si nul....
Bàt
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re : Copier les valeur d'une plage avec condition

Re Bonsoir

Non je ne comprends pas vraiment mieux :rolleyes: mais personne n'est nul, juste besoin d'apprendre !

Dans un Classeur Disons "Classeur Bon De Commande" tu as une (ou des) macro(s) qui fait(font) l'enregistrement ...
Dans un autre Classeur Disons "Classeur Statistique" tu as tes fameuses Fonctions SommeProd... Dans celui là aussi as tu des Macros ?

Donc c'est dans quel classeur que celà "rame" ? C'est dans celui ci qu'il faut encadrer tes macros avec les codes que je t'ai donnés... Au pire le mettre dans chacune des macros... Et même dans les deux Classeurs...

Et si il y a vraiment besoin je disais avant qu'on peut les mettre à la place plutôt en tant que WorkBook_Open et l'autre à WorkBook_BeforeClose... Ce sont des macros évènementielles dans l'emplacement du Private Module de "ThisWorkBook" ... (regarde l'aide VBA)

Bon Courage
@+Thierry
 

Marypen

XLDnaute Nouveau
Re : Copier les valeur d'une plage avec condition

Non pas de macro dans le classeur "Statistique" qui est en realité "detail cdes" . J'ai bien encadrer mes macros avec les codes que tu m'as donné, et jai trouvé comment faire pour placer les code dans "Thisworkbook". Tout compte fait, je suis d'accord avec toi, je ne suis pas si nul, j'apprend.

Ca fonctionne comme je veux Tout est nickel!!
Grand merci à toi. A bientot pour d'autres aventures sans doute.
Marypen
 

Discussions similaires