MACRO

Bonjour à tous !

j'ai réalisé une macro avec un bouton lorque montants dans DNNEES est mis à jour,

il met à jour PROD M dans ADS et il remplace les montants de PROD M-1 par les anciens montants de PROD M.

Cela est parfait sur ce petit fichier mais sur mon grand fichier la macro s'execute lentement.

y a t-il un moyen d'accélerer plus rapidement sur mon plus grand fichier ?

Merci pour votre aide

Cordialement,

deton

8macro-deton.zip (13.41 Ko)

Bonjour

Remplaces ta macro par celle-ci et testes

Sub Formule()
  Application.ScreenUpdating = False
  With Range("C2:C39")
    .Copy Destination:=Range("B2")
    .Formula = "=VLOOKUP(A2,'DNNEES'!$A$2:$E$39,5,FALSE)"
    .Value = .Value
    .Borders(xlEdgeLeft).LineStyle = xlNone
  End With
  ' Si les dimensions de la plage de changent pas
  ' Pas besoin de refaire les formules
  ' Les totaux seront actualisés automatiquement
  Range("B40:C40").Formula = "=SUM(B2:B39)"
End Sub

Peux-tu m'expliquer la manipulation à faire pour remplacer ma macro stp.

Merci pour ton retour

Amicalement

deton

Bonjour

Heuuu tu effaces ton ancienne macro et tu colles celle-ci

OU je n'ai pas bien compris que tu veux

comment effacer et remplacer, je n'arrive pas à le faire parceque moi pour faire la macro,

je vais dans outils -> macro

merci

cordialement

deton

Bonjour

Ben tu vas dans outils / macro puis tu cliques sur le bouton "Modifier. ensuite tu effaces ton code et tu colles celui de Banzai.

Veille à ce que le nom de la macro de Banzai soit identique au nom de ta macro

Si ok, clique sur le V vert à coté du bouton EDITER lors de ta réponse afin de cloturer le fil

A te relire

Merci beaucoup Banzai64, et DAN

Ta formule marche super bien

mais quand il ne trouve pas le compte il met #NA#, comment faire pour l'enlever dans la macro,

pour que quand il ne trouve pas le compte correspondant il n'affiche rien comme montant.

Je souhaite mettre un second bouton en place pour effacer de façon plus rapide la colonne PROD M, quand j'en aurai plus besoin,

pourrez-vous m'aider à le faire SVP.

Merci d'avance

Cordialement,

deton

Bonjour

Modifs dans le fichier

Cordialement

5macro-deton.zip (14.44 Ko)

Merci

Cordialement

Deton

Bonjour,

Vous m'avez bien aidé pour la macro.

Je suis désolé de vous contacter encore.

Dans mon fichier ci-joint, la macro fonctionne bien pour les colonnes PROD M-1 et PROD M; c'est à dire lorque

PROD M est mis à jour, les valeurs précédentes de PROD M écrasent les valeurs de PROD M-1.

Mais j'ai remarqué que pour les colonnes phase en cours et phase, ça ne fonctionnent pas.

En fait la macro met correctement à jours la colonne phase mais les valeurs précédentes de phase n'écrasent pas les valeurs de Phase en cours.

Merci pour votre aide !

Cordialement,

DETON

3macromaj.zip (14.55 Ko)

Bonjour

Mais j'ai remarqué que pour les colonnes phase en cours et phase, ça ne fonctionnent pas.

En fait la macro met correctement à jours la colonne phase mais les valeurs précédentes de phase n'écrasent pas les valeurs de Phase en cours.

DETON, il faut être cphérent dans tes demandes

1) Tu joins un fichier avec 3 colonnes et tu demandes une solution pour celui-ci.

2) tu sembles surpris que cette solution n'affecte pas les 2 colonnes supplémentaires que tu viens de rajouter au fichier.

Nous ne sommes plus dans l'énoncé du sujet.

Cordialement

AMADEUS,

En fait, je ne sais si je me suis fait comprendre,

tu m'as aidé à faire cette macro qui concerne la colonne PROD M et PROD M-1:

Sub Formule()

Application.ScreenUpdating = False

With Range("C2:C39")

.Copy Destination:=Range("B2")

.Formula = "=IF(ISNA(VLOOKUP(A2,'DNNEES'!$A$2:$E$39,5,FALSE)),"""",VLOOKUP(A2,'DNNEES'!$A$2:$E$39,5,FALSE))"

.Value = .Value

.Borders(xlEdgeLeft).LineStyle = xlNone

End With

' Si les dimensions de la plage de changent pas

' Pas besoin de refaire les formules

' Les totaux seront actualisés automatiquement

Range("B40:C40").Formula = "=SUM(B2:B39)"

End Sub

Et moi j'ai rajouté des condition en plus en rajoutant des colonnes en plus et en insérant cette condition :

With Range("E2:E39")

.Copy Destination:=Range("E2")

.Formula = "=IF(ISNA(VLOOKUP(A2,DNNEES!$A$2:$G$39,6,FALSE))=FALSE,IF(VLOOKUP(A2,DNNEES!$A$2:$G$39,7,FALSE)=$G$3,VLOOKUP(A2,DNNEES!$A$2:$G$39,6,FALSE),D4),D4)"

.Value = .Value

.Borders(xlEdgeLeft).LineStyle = xlNone

End With

Juste qu'elle fonctionne mais les valeurs précédentes de phase n'écrasent pas les valeurs de Phase en cours comme le fait les colonnes PROD M et M-1.

EST-IL POSSIBLE DE LE FAIRE ????

MERCI

CORDIALEMENT

DETON

6macromaj.zip (14.56 Ko)

Bonjour

Juste qu'elle fonctionne mais les valeurs précédentes de phase n'écrasent pas les valeurs de Phase en cours comme le fait les colonnes PROD M et M-1.

Dans le Code que tu as ajouté, remplace

With Range("E2:E39")

.Copy Destination:=Range("E2")

par

With Range("E2:E39")

.Copy Destination:=Range("D2")

Cordialement

Merciiii

Rechercher des sujets similaires à "macro"