Bonjour à vous tous.
Voici mon problème. Dans une colonne, j'ai des chiffres et parfois le
chiffre zéro. Ce que je veux, c'est de prendre une cellule et la diviser par
la suivante qui n'est pas un zéro.
Exemple.
Colonne A
A1=12 ici la formule devrait être A1/A2
A2=2 ici la formule devrait être A2/ A5 car A3 et A4 contiennent 0
A3=0 ici la réponse devrait être 0
A4=0 ici la réponse devrait être 0
A5=2 etc.
J'avais déjà posté ce problème et Isabelle m'avait trouvé cette merveilleuse
macro qui fonctionne super bien.
Sub Macro2()
Application.ScreenUpdating = False
For Each s In Range("aC29:aC1029")
For Each c In Range("aC29:aC1029")
If c <> 0 Then Range("ad" & s.Row) = s / c
Next
Next
Application.ScreenUpdating = True
End Sub
Le problème: c'est que si je change AC1029 pour AC40, la macro prend 20
secondes à s'exécuter, mais dans la réalité, je dois aller jusqu'à AC1029 et
là, après 10 minutes, aucune réponse ne s'affichait, il travaillait toujours.
Le fichier pèse 1,80 MO (Ce qui n'est pas vraiment énorme) et il y a qu'une
seule feuille.
Que dois-je faire pour améliorer la macro. Est-ce le code qui est trop lent,
mon ordinateur, etc.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Patrick
Bonjour,
Il y a d'abord une chose que tu peux faire, toujours en VBA : Mettre une formule dans la colonne "AD" qui fera le même calcul que fait ta macro (par exemple dans AD1 "=SI(A1<>0,AC1/A1,"")) et ensuite faire un copier/coller les valeurs. Je pense que cela permettra d'aller beaucoup plus vide.
Je ne connais pas ton fichier mais, si il contient beaucoup de formules, tu peux aussi commencer ta macro en mettant le recalcul à manuel puis remettre le recalcul à automatique à la fin.
Bonne journée.
-- Patrick
"marcus" wrote:
Bonjour à vous tous. Voici mon problème. Dans une colonne, j'ai des chiffres et parfois le chiffre zéro. Ce que je veux, c'est de prendre une cellule et la diviser par la suivante qui n'est pas un zéro. Exemple. Colonne A A1 ici la formule devrait être A1/A2 A2=2 ici la formule devrait être A2/ A5 car A3 et A4 contiennent 0 A3=0 ici la réponse devrait être 0 A4=0 ici la réponse devrait être 0 A5=2 etc.
J'avais déjà posté ce problème et Isabelle m'avait trouvé cette merveilleuse macro qui fonctionne super bien.
Sub Macro2() Application.ScreenUpdating = False For Each s In Range("aC29:aC1029") For Each c In Range("aC29:aC1029") If c <> 0 Then Range("ad" & s.Row) = s / c Next Next Application.ScreenUpdating = True End Sub
Le problème: c'est que si je change AC1029 pour AC40, la macro prend 20 secondes à s'exécuter, mais dans la réalité, je dois aller jusqu'à AC1029 et là, après 10 minutes, aucune réponse ne s'affichait, il travaillait toujours. Le fichier pèse 1,80 MO (Ce qui n'est pas vraiment énorme) et il y a qu'une seule feuille.
Que dois-je faire pour améliorer la macro. Est-ce le code qui est trop lent, mon ordinateur, etc.
Merci de votre aide
Marc
Bonjour,
Il y a d'abord une chose que tu peux faire, toujours en VBA : Mettre une
formule dans la colonne "AD" qui fera le même calcul que fait ta macro (par
exemple dans AD1 "=SI(A1<>0,AC1/A1,"")) et ensuite faire un copier/coller les
valeurs. Je pense que cela permettra d'aller beaucoup plus vide.
Je ne connais pas ton fichier mais, si il contient beaucoup de formules, tu
peux aussi commencer ta macro en mettant le recalcul à manuel puis remettre
le recalcul à automatique à la fin.
Bonne journée.
--
Patrick
"marcus" wrote:
Bonjour à vous tous.
Voici mon problème. Dans une colonne, j'ai des chiffres et parfois le
chiffre zéro. Ce que je veux, c'est de prendre une cellule et la diviser par
la suivante qui n'est pas un zéro.
Exemple.
Colonne A
A1 ici la formule devrait être A1/A2
A2=2 ici la formule devrait être A2/ A5 car A3 et A4 contiennent 0
A3=0 ici la réponse devrait être 0
A4=0 ici la réponse devrait être 0
A5=2 etc.
J'avais déjà posté ce problème et Isabelle m'avait trouvé cette merveilleuse
macro qui fonctionne super bien.
Sub Macro2()
Application.ScreenUpdating = False
For Each s In Range("aC29:aC1029")
For Each c In Range("aC29:aC1029")
If c <> 0 Then Range("ad" & s.Row) = s / c
Next
Next
Application.ScreenUpdating = True
End Sub
Le problème: c'est que si je change AC1029 pour AC40, la macro prend 20
secondes à s'exécuter, mais dans la réalité, je dois aller jusqu'à AC1029 et
là, après 10 minutes, aucune réponse ne s'affichait, il travaillait toujours.
Le fichier pèse 1,80 MO (Ce qui n'est pas vraiment énorme) et il y a qu'une
seule feuille.
Que dois-je faire pour améliorer la macro. Est-ce le code qui est trop lent,
mon ordinateur, etc.
Il y a d'abord une chose que tu peux faire, toujours en VBA : Mettre une formule dans la colonne "AD" qui fera le même calcul que fait ta macro (par exemple dans AD1 "=SI(A1<>0,AC1/A1,"")) et ensuite faire un copier/coller les valeurs. Je pense que cela permettra d'aller beaucoup plus vide.
Je ne connais pas ton fichier mais, si il contient beaucoup de formules, tu peux aussi commencer ta macro en mettant le recalcul à manuel puis remettre le recalcul à automatique à la fin.
Bonne journée.
-- Patrick
"marcus" wrote:
Bonjour à vous tous. Voici mon problème. Dans une colonne, j'ai des chiffres et parfois le chiffre zéro. Ce que je veux, c'est de prendre une cellule et la diviser par la suivante qui n'est pas un zéro. Exemple. Colonne A A1 ici la formule devrait être A1/A2 A2=2 ici la formule devrait être A2/ A5 car A3 et A4 contiennent 0 A3=0 ici la réponse devrait être 0 A4=0 ici la réponse devrait être 0 A5=2 etc.
J'avais déjà posté ce problème et Isabelle m'avait trouvé cette merveilleuse macro qui fonctionne super bien.
Sub Macro2() Application.ScreenUpdating = False For Each s In Range("aC29:aC1029") For Each c In Range("aC29:aC1029") If c <> 0 Then Range("ad" & s.Row) = s / c Next Next Application.ScreenUpdating = True End Sub
Le problème: c'est que si je change AC1029 pour AC40, la macro prend 20 secondes à s'exécuter, mais dans la réalité, je dois aller jusqu'à AC1029 et là, après 10 minutes, aucune réponse ne s'affichait, il travaillait toujours. Le fichier pèse 1,80 MO (Ce qui n'est pas vraiment énorme) et il y a qu'une seule feuille.
Que dois-je faire pour améliorer la macro. Est-ce le code qui est trop lent, mon ordinateur, etc.
Merci de votre aide
Marc
marcus
Bonjour Patrick Merci énormément de ton aide, mais n'étant pas du tout programmeur, je ne sais pas comment faire ce que tu me conseilles de faire. Peut-tu m'aider à modifier ma macro, svp. Merci de ton aide
Marc
Bonjour,
Il y a d'abord une chose que tu peux faire, toujours en VBA : Mettre une formule dans la colonne "AD" qui fera le même calcul que fait ta macro (par exemple dans AD1 "=SI(A1<>0,AC1/A1,"")) et ensuite faire un copier/coller les valeurs. Je pense que cela permettra d'aller beaucoup plus vide.
Je ne connais pas ton fichier mais, si il contient beaucoup de formules, tu peux aussi commencer ta macro en mettant le recalcul à manuel puis remettre le recalcul à automatique à la fin.
Bonne journée.
-- Patrick
"marcus" wrote:
Bonjour à vous tous. Voici mon problème. Dans une colonne, j'ai des chiffres et parfois le chiffre zéro. Ce que je veux, c'est de prendre une cellule et la diviser par la suivante qui n'est pas un zéro. Exemple. Colonne A A1 ici la formule devrait être A1/A2 A2=2 ici la formule devrait être A2/ A5 car A3 et A4 contiennent 0 A3=0 ici la réponse devrait être 0 A4=0 ici la réponse devrait être 0 A5=2 etc.
J'avais déjà posté ce problème et Isabelle m'avait trouvé cette merveilleuse macro qui fonctionne super bien.
Sub Macro2() Application.ScreenUpdating = False For Each s In Range("aC29:aC1029") For Each c In Range("aC29:aC1029") If c <> 0 Then Range("ad" & s.Row) = s / c Next Next Application.ScreenUpdating = True End Sub
Le problème: c'est que si je change AC1029 pour AC40, la macro prend 20 secondes à s'exécuter, mais dans la réalité, je dois aller jusqu'à AC1029 et là, après 10 minutes, aucune réponse ne s'affichait, il travaillait toujours. Le fichier pèse 1,80 MO (Ce qui n'est pas vraiment énorme) et il y a qu'une seule feuille.
Que dois-je faire pour améliorer la macro. Est-ce le code qui est trop lent, mon ordinateur, etc.
Merci de votre aide
Marc
Bonjour Patrick
Merci énormément de ton aide, mais n'étant pas du tout programmeur, je ne
sais pas comment faire ce que tu me conseilles de faire. Peut-tu m'aider à
modifier ma macro, svp.
Merci de ton aide
Marc
Bonjour,
Il y a d'abord une chose que tu peux faire, toujours en VBA : Mettre une
formule dans la colonne "AD" qui fera le même calcul que fait ta macro (par
exemple dans AD1 "=SI(A1<>0,AC1/A1,"")) et ensuite faire un copier/coller les
valeurs. Je pense que cela permettra d'aller beaucoup plus vide.
Je ne connais pas ton fichier mais, si il contient beaucoup de formules, tu
peux aussi commencer ta macro en mettant le recalcul à manuel puis remettre
le recalcul à automatique à la fin.
Bonne journée.
--
Patrick
"marcus" wrote:
Bonjour à vous tous.
Voici mon problème. Dans une colonne, j'ai des chiffres et parfois le
chiffre zéro. Ce que je veux, c'est de prendre une cellule et la diviser par
la suivante qui n'est pas un zéro.
Exemple.
Colonne A
A1 ici la formule devrait être A1/A2
A2=2 ici la formule devrait être A2/ A5 car A3 et A4 contiennent 0
A3=0 ici la réponse devrait être 0
A4=0 ici la réponse devrait être 0
A5=2 etc.
J'avais déjà posté ce problème et Isabelle m'avait trouvé cette merveilleuse
macro qui fonctionne super bien.
Sub Macro2()
Application.ScreenUpdating = False
For Each s In Range("aC29:aC1029")
For Each c In Range("aC29:aC1029")
If c <> 0 Then Range("ad" & s.Row) = s / c
Next
Next
Application.ScreenUpdating = True
End Sub
Le problème: c'est que si je change AC1029 pour AC40, la macro prend 20
secondes à s'exécuter, mais dans la réalité, je dois aller jusqu'à AC1029 et
là, après 10 minutes, aucune réponse ne s'affichait, il travaillait toujours.
Le fichier pèse 1,80 MO (Ce qui n'est pas vraiment énorme) et il y a qu'une
seule feuille.
Que dois-je faire pour améliorer la macro. Est-ce le code qui est trop lent,
mon ordinateur, etc.
Bonjour Patrick Merci énormément de ton aide, mais n'étant pas du tout programmeur, je ne sais pas comment faire ce que tu me conseilles de faire. Peut-tu m'aider à modifier ma macro, svp. Merci de ton aide
Marc
Bonjour,
Il y a d'abord une chose que tu peux faire, toujours en VBA : Mettre une formule dans la colonne "AD" qui fera le même calcul que fait ta macro (par exemple dans AD1 "=SI(A1<>0,AC1/A1,"")) et ensuite faire un copier/coller les valeurs. Je pense que cela permettra d'aller beaucoup plus vide.
Je ne connais pas ton fichier mais, si il contient beaucoup de formules, tu peux aussi commencer ta macro en mettant le recalcul à manuel puis remettre le recalcul à automatique à la fin.
Bonne journée.
-- Patrick
"marcus" wrote:
Bonjour à vous tous. Voici mon problème. Dans une colonne, j'ai des chiffres et parfois le chiffre zéro. Ce que je veux, c'est de prendre une cellule et la diviser par la suivante qui n'est pas un zéro. Exemple. Colonne A A1 ici la formule devrait être A1/A2 A2=2 ici la formule devrait être A2/ A5 car A3 et A4 contiennent 0 A3=0 ici la réponse devrait être 0 A4=0 ici la réponse devrait être 0 A5=2 etc.
J'avais déjà posté ce problème et Isabelle m'avait trouvé cette merveilleuse macro qui fonctionne super bien.
Sub Macro2() Application.ScreenUpdating = False For Each s In Range("aC29:aC1029") For Each c In Range("aC29:aC1029") If c <> 0 Then Range("ad" & s.Row) = s / c Next Next Application.ScreenUpdating = True End Sub
Le problème: c'est que si je change AC1029 pour AC40, la macro prend 20 secondes à s'exécuter, mais dans la réalité, je dois aller jusqu'à AC1029 et là, après 10 minutes, aucune réponse ne s'affichait, il travaillait toujours. Le fichier pèse 1,80 MO (Ce qui n'est pas vraiment énorme) et il y a qu'une seule feuille.
Que dois-je faire pour améliorer la macro. Est-ce le code qui est trop lent, mon ordinateur, etc.
Merci de votre aide
Marc
Patrick
Le mieux serait que tu utilises l'enregistreur de macros. Comme cela tu fais tout manuellement une fois et ensuite tu copies la macro générée dans ton code. Pour le recalcul, il faut utiliser "Application.Calculation". Quand tu mettras un "=" après, VBA te proposera les valeurs que tu peux utiliser. Tu verras c'est très simple à faire.
-- Patrick
"marcus" wrote:
Bonjour Patrick Merci énormément de ton aide, mais n'étant pas du tout programmeur, je ne sais pas comment faire ce que tu me conseilles de faire. Peut-tu m'aider à modifier ma macro, svp. Merci de ton aide
Marc
Bonjour,
Il y a d'abord une chose que tu peux faire, toujours en VBA : Mettre une formule dans la colonne "AD" qui fera le même calcul que fait ta macro (par exemple dans AD1 "=SI(A1<>0,AC1/A1,"")) et ensuite faire un copier/coller les valeurs. Je pense que cela permettra d'aller beaucoup plus vide.
Je ne connais pas ton fichier mais, si il contient beaucoup de formules, tu peux aussi commencer ta macro en mettant le recalcul à manuel puis remettre le recalcul à automatique à la fin.
Bonne journée.
-- Patrick
"marcus" wrote:
Bonjour à vous tous. Voici mon problème. Dans une colonne, j'ai des chiffres et parfois le chiffre zéro. Ce que je veux, c'est de prendre une cellule et la diviser par la suivante qui n'est pas un zéro. Exemple. Colonne A A1 ici la formule devrait être A1/A2 A2=2 ici la formule devrait être A2/ A5 car A3 et A4 contiennent 0 A3=0 ici la réponse devrait être 0 A4=0 ici la réponse devrait être 0 A5=2 etc.
J'avais déjà posté ce problème et Isabelle m'avait trouvé cette merveilleuse macro qui fonctionne super bien.
Sub Macro2() Application.ScreenUpdating = False For Each s In Range("aC29:aC1029") For Each c In Range("aC29:aC1029") If c <> 0 Then Range("ad" & s.Row) = s / c Next Next Application.ScreenUpdating = True End Sub
Le problème: c'est que si je change AC1029 pour AC40, la macro prend 20 secondes à s'exécuter, mais dans la réalité, je dois aller jusqu'à AC1029 et là, après 10 minutes, aucune réponse ne s'affichait, il travaillait toujours. Le fichier pèse 1,80 MO (Ce qui n'est pas vraiment énorme) et il y a qu'une seule feuille.
Que dois-je faire pour améliorer la macro. Est-ce le code qui est trop lent, mon ordinateur, etc.
Merci de votre aide
Marc
Le mieux serait que tu utilises l'enregistreur de macros. Comme cela tu fais
tout manuellement une fois et ensuite tu copies la macro générée dans ton
code.
Pour le recalcul, il faut utiliser "Application.Calculation". Quand tu
mettras un "=" après, VBA te proposera les valeurs que tu peux utiliser. Tu
verras c'est très simple à faire.
--
Patrick
"marcus" wrote:
Bonjour Patrick
Merci énormément de ton aide, mais n'étant pas du tout programmeur, je ne
sais pas comment faire ce que tu me conseilles de faire. Peut-tu m'aider à
modifier ma macro, svp.
Merci de ton aide
Marc
Bonjour,
Il y a d'abord une chose que tu peux faire, toujours en VBA : Mettre une
formule dans la colonne "AD" qui fera le même calcul que fait ta macro (par
exemple dans AD1 "=SI(A1<>0,AC1/A1,"")) et ensuite faire un copier/coller les
valeurs. Je pense que cela permettra d'aller beaucoup plus vide.
Je ne connais pas ton fichier mais, si il contient beaucoup de formules, tu
peux aussi commencer ta macro en mettant le recalcul à manuel puis remettre
le recalcul à automatique à la fin.
Bonne journée.
--
Patrick
"marcus" wrote:
Bonjour à vous tous.
Voici mon problème. Dans une colonne, j'ai des chiffres et parfois le
chiffre zéro. Ce que je veux, c'est de prendre une cellule et la diviser par
la suivante qui n'est pas un zéro.
Exemple.
Colonne A
A1 ici la formule devrait être A1/A2
A2=2 ici la formule devrait être A2/ A5 car A3 et A4 contiennent 0
A3=0 ici la réponse devrait être 0
A4=0 ici la réponse devrait être 0
A5=2 etc.
J'avais déjà posté ce problème et Isabelle m'avait trouvé cette merveilleuse
macro qui fonctionne super bien.
Sub Macro2()
Application.ScreenUpdating = False
For Each s In Range("aC29:aC1029")
For Each c In Range("aC29:aC1029")
If c <> 0 Then Range("ad" & s.Row) = s / c
Next
Next
Application.ScreenUpdating = True
End Sub
Le problème: c'est que si je change AC1029 pour AC40, la macro prend 20
secondes à s'exécuter, mais dans la réalité, je dois aller jusqu'à AC1029 et
là, après 10 minutes, aucune réponse ne s'affichait, il travaillait toujours.
Le fichier pèse 1,80 MO (Ce qui n'est pas vraiment énorme) et il y a qu'une
seule feuille.
Que dois-je faire pour améliorer la macro. Est-ce le code qui est trop lent,
mon ordinateur, etc.
Le mieux serait que tu utilises l'enregistreur de macros. Comme cela tu fais tout manuellement une fois et ensuite tu copies la macro générée dans ton code. Pour le recalcul, il faut utiliser "Application.Calculation". Quand tu mettras un "=" après, VBA te proposera les valeurs que tu peux utiliser. Tu verras c'est très simple à faire.
-- Patrick
"marcus" wrote:
Bonjour Patrick Merci énormément de ton aide, mais n'étant pas du tout programmeur, je ne sais pas comment faire ce que tu me conseilles de faire. Peut-tu m'aider à modifier ma macro, svp. Merci de ton aide
Marc
Bonjour,
Il y a d'abord une chose que tu peux faire, toujours en VBA : Mettre une formule dans la colonne "AD" qui fera le même calcul que fait ta macro (par exemple dans AD1 "=SI(A1<>0,AC1/A1,"")) et ensuite faire un copier/coller les valeurs. Je pense que cela permettra d'aller beaucoup plus vide.
Je ne connais pas ton fichier mais, si il contient beaucoup de formules, tu peux aussi commencer ta macro en mettant le recalcul à manuel puis remettre le recalcul à automatique à la fin.
Bonne journée.
-- Patrick
"marcus" wrote:
Bonjour à vous tous. Voici mon problème. Dans une colonne, j'ai des chiffres et parfois le chiffre zéro. Ce que je veux, c'est de prendre une cellule et la diviser par la suivante qui n'est pas un zéro. Exemple. Colonne A A1 ici la formule devrait être A1/A2 A2=2 ici la formule devrait être A2/ A5 car A3 et A4 contiennent 0 A3=0 ici la réponse devrait être 0 A4=0 ici la réponse devrait être 0 A5=2 etc.
J'avais déjà posté ce problème et Isabelle m'avait trouvé cette merveilleuse macro qui fonctionne super bien.
Sub Macro2() Application.ScreenUpdating = False For Each s In Range("aC29:aC1029") For Each c In Range("aC29:aC1029") If c <> 0 Then Range("ad" & s.Row) = s / c Next Next Application.ScreenUpdating = True End Sub
Le problème: c'est que si je change AC1029 pour AC40, la macro prend 20 secondes à s'exécuter, mais dans la réalité, je dois aller jusqu'à AC1029 et là, après 10 minutes, aucune réponse ne s'affichait, il travaillait toujours. Le fichier pèse 1,80 MO (Ce qui n'est pas vraiment énorme) et il y a qu'une seule feuille.
Que dois-je faire pour améliorer la macro. Est-ce le code qui est trop lent, mon ordinateur, etc.
Merci de votre aide
Marc
marcus
Bonjour Patrick Effectivement, ce fût très simple à exécuter (la macro), par contre, cela règle en rien mon problème car cela prend autant de temps à exécuter. Merci de ton aide et je suis un peu découragé .
Merci Marcus
Le mieux serait que tu utilises l'enregistreur de macros. Comme cela tu fais tout manuellement une fois et ensuite tu copies la macro générée dans ton code. Pour le recalcul, il faut utiliser "Application.Calculation". Quand tu mettras un "=" après, VBA te proposera les valeurs que tu peux utiliser. Tu verras c'est très simple à faire.
-- Patrick
"marcus" wrote:
Bonjour Patrick Merci énormément de ton aide, mais n'étant pas du tout programmeur, je ne sais pas comment faire ce que tu me conseilles de faire. Peut-tu m'aider à modifier ma macro, svp. Merci de ton aide
Marc
Bonjour,
Il y a d'abord une chose que tu peux faire, toujours en VBA : Mettre une formule dans la colonne "AD" qui fera le même calcul que fait ta macro (par exemple dans AD1 "=SI(A1<>0,AC1/A1,"")) et ensuite faire un copier/coller les valeurs. Je pense que cela permettra d'aller beaucoup plus vide.
Je ne connais pas ton fichier mais, si il contient beaucoup de formules, tu peux aussi commencer ta macro en mettant le recalcul à manuel puis remettre le recalcul à automatique à la fin.
Bonne journée.
-- Patrick
"marcus" wrote:
Bonjour à vous tous. Voici mon problème. Dans une colonne, j'ai des chiffres et parfois le chiffre zéro. Ce que je veux, c'est de prendre une cellule et la diviser par la suivante qui n'est pas un zéro. Exemple. Colonne A A1 ici la formule devrait être A1/A2 A2=2 ici la formule devrait être A2/ A5 car A3 et A4 contiennent 0 A3=0 ici la réponse devrait être 0 A4=0 ici la réponse devrait être 0 A5=2 etc.
J'avais déjà posté ce problème et Isabelle m'avait trouvé cette merveilleuse macro qui fonctionne super bien.
Sub Macro2() Application.ScreenUpdating = False For Each s In Range("aC29:aC1029") For Each c In Range("aC29:aC1029") If c <> 0 Then Range("ad" & s.Row) = s / c Next Next Application.ScreenUpdating = True End Sub
Le problème: c'est que si je change AC1029 pour AC40, la macro prend 20 secondes à s'exécuter, mais dans la réalité, je dois aller jusqu'à AC1029 et là, après 10 minutes, aucune réponse ne s'affichait, il travaillait toujours. Le fichier pèse 1,80 MO (Ce qui n'est pas vraiment énorme) et il y a qu'une seule feuille.
Que dois-je faire pour améliorer la macro. Est-ce le code qui est trop lent, mon ordinateur, etc.
Merci de votre aide
Marc
Bonjour Patrick
Effectivement, ce fût très simple à exécuter (la macro), par contre, cela
règle en rien mon problème car cela prend autant de temps à exécuter. Merci
de ton aide et je suis un peu découragé .
Merci
Marcus
Le mieux serait que tu utilises l'enregistreur de macros. Comme cela tu fais
tout manuellement une fois et ensuite tu copies la macro générée dans ton
code.
Pour le recalcul, il faut utiliser "Application.Calculation". Quand tu
mettras un "=" après, VBA te proposera les valeurs que tu peux utiliser. Tu
verras c'est très simple à faire.
--
Patrick
"marcus" wrote:
Bonjour Patrick
Merci énormément de ton aide, mais n'étant pas du tout programmeur, je ne
sais pas comment faire ce que tu me conseilles de faire. Peut-tu m'aider à
modifier ma macro, svp.
Merci de ton aide
Marc
Bonjour,
Il y a d'abord une chose que tu peux faire, toujours en VBA : Mettre une
formule dans la colonne "AD" qui fera le même calcul que fait ta macro (par
exemple dans AD1 "=SI(A1<>0,AC1/A1,"")) et ensuite faire un copier/coller les
valeurs. Je pense que cela permettra d'aller beaucoup plus vide.
Je ne connais pas ton fichier mais, si il contient beaucoup de formules, tu
peux aussi commencer ta macro en mettant le recalcul à manuel puis remettre
le recalcul à automatique à la fin.
Bonne journée.
--
Patrick
"marcus" wrote:
Bonjour à vous tous.
Voici mon problème. Dans une colonne, j'ai des chiffres et parfois le
chiffre zéro. Ce que je veux, c'est de prendre une cellule et la diviser par
la suivante qui n'est pas un zéro.
Exemple.
Colonne A
A1 ici la formule devrait être A1/A2
A2=2 ici la formule devrait être A2/ A5 car A3 et A4 contiennent 0
A3=0 ici la réponse devrait être 0
A4=0 ici la réponse devrait être 0
A5=2 etc.
J'avais déjà posté ce problème et Isabelle m'avait trouvé cette merveilleuse
macro qui fonctionne super bien.
Sub Macro2()
Application.ScreenUpdating = False
For Each s In Range("aC29:aC1029")
For Each c In Range("aC29:aC1029")
If c <> 0 Then Range("ad" & s.Row) = s / c
Next
Next
Application.ScreenUpdating = True
End Sub
Le problème: c'est que si je change AC1029 pour AC40, la macro prend 20
secondes à s'exécuter, mais dans la réalité, je dois aller jusqu'à AC1029 et
là, après 10 minutes, aucune réponse ne s'affichait, il travaillait toujours.
Le fichier pèse 1,80 MO (Ce qui n'est pas vraiment énorme) et il y a qu'une
seule feuille.
Que dois-je faire pour améliorer la macro. Est-ce le code qui est trop lent,
mon ordinateur, etc.
Bonjour Patrick Effectivement, ce fût très simple à exécuter (la macro), par contre, cela règle en rien mon problème car cela prend autant de temps à exécuter. Merci de ton aide et je suis un peu découragé .
Merci Marcus
Le mieux serait que tu utilises l'enregistreur de macros. Comme cela tu fais tout manuellement une fois et ensuite tu copies la macro générée dans ton code. Pour le recalcul, il faut utiliser "Application.Calculation". Quand tu mettras un "=" après, VBA te proposera les valeurs que tu peux utiliser. Tu verras c'est très simple à faire.
-- Patrick
"marcus" wrote:
Bonjour Patrick Merci énormément de ton aide, mais n'étant pas du tout programmeur, je ne sais pas comment faire ce que tu me conseilles de faire. Peut-tu m'aider à modifier ma macro, svp. Merci de ton aide
Marc
Bonjour,
Il y a d'abord une chose que tu peux faire, toujours en VBA : Mettre une formule dans la colonne "AD" qui fera le même calcul que fait ta macro (par exemple dans AD1 "=SI(A1<>0,AC1/A1,"")) et ensuite faire un copier/coller les valeurs. Je pense que cela permettra d'aller beaucoup plus vide.
Je ne connais pas ton fichier mais, si il contient beaucoup de formules, tu peux aussi commencer ta macro en mettant le recalcul à manuel puis remettre le recalcul à automatique à la fin.
Bonne journée.
-- Patrick
"marcus" wrote:
Bonjour à vous tous. Voici mon problème. Dans une colonne, j'ai des chiffres et parfois le chiffre zéro. Ce que je veux, c'est de prendre une cellule et la diviser par la suivante qui n'est pas un zéro. Exemple. Colonne A A1 ici la formule devrait être A1/A2 A2=2 ici la formule devrait être A2/ A5 car A3 et A4 contiennent 0 A3=0 ici la réponse devrait être 0 A4=0 ici la réponse devrait être 0 A5=2 etc.
J'avais déjà posté ce problème et Isabelle m'avait trouvé cette merveilleuse macro qui fonctionne super bien.
Sub Macro2() Application.ScreenUpdating = False For Each s In Range("aC29:aC1029") For Each c In Range("aC29:aC1029") If c <> 0 Then Range("ad" & s.Row) = s / c Next Next Application.ScreenUpdating = True End Sub
Le problème: c'est que si je change AC1029 pour AC40, la macro prend 20 secondes à s'exécuter, mais dans la réalité, je dois aller jusqu'à AC1029 et là, après 10 minutes, aucune réponse ne s'affichait, il travaillait toujours. Le fichier pèse 1,80 MO (Ce qui n'est pas vraiment énorme) et il y a qu'une seule feuille.
Que dois-je faire pour améliorer la macro. Est-ce le code qui est trop lent, mon ordinateur, etc.