Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Simplifier une macro

7 réponses
Avatar
sunburn
Bonjour,
je souhaite simplifier une macro, qui est dans le code de ma feuille nommée
"DA"
j'ai rajouté la dernière ligne à une macro existante. la première ligne, les
cellules sont celles de la feuille active. Donc moi j'ai précisé la feuille
pour la seconde ligne. ça fonctionne, mais y-a-t-il mieux ?

Merci.
YANN
----
Application.ScreenUpdating = False
If [G40] = "IS" And [G41] = "Normal" Then: [G42] = "2065": [G43] = "2050"
If [G40] = "IS" Then: Sheets("80").Range("H17") = "NA":
Sheets("80").Range("H18") = "NA": Sheets("80").Range("H24") = "80_21":
Sheets("80").Range("H26") = "80_20": Sheets("80_11").Range("A4") = "NA":
Sheets("80_21").Range("A4") = "Utilisée"
------

7 réponses

Avatar
MichDenis
Bonjour,

ce n'est pas nécessaire plus court, mais plus lisible !

Application.ScreenUpdating = False
If UCase([G40]) = "IS" And _
UCase([G41]) = UCase("Normal") Then
[G42] = "2065"
[G43] = "2050"
ElseIf [G40] = "IS" Then
With Sheets("80")
.Range("A4,H17:H18") = "NA"
.Range("H24") = "80_21"
.Range("H26") = "80_20"
End With
Sheets("80_21").Range("A4") = "Utilisée"
End If
Application.ScreenUpdating = True




"sunburn" a écrit dans le message de groupe de
discussion :
Bonjour,
je souhaite simplifier une macro, qui est dans le code de ma feuille nommée
"DA"
j'ai rajouté la dernière ligne à une macro existante. la première ligne, les
cellules sont celles de la feuille active. Donc moi j'ai précisé la feuille
pour la seconde ligne. ça fonctionne, mais y-a-t-il mieux ?

Merci.
YANN
----
Application.ScreenUpdating = False
If [G40] = "IS" And [G41] = "Normal" Then: [G42] = "2065": [G43] = "2050"
If [G40] = "IS" Then: Sheets("80").Range("H17") = "NA":
Sheets("80").Range("H18") = "NA": Sheets("80").Range("H24") = "80_21":
Sheets("80").Range("H26") = "80_20": Sheets("80_11").Range("A4") = "NA":
Sheets("80_21").Range("A4") = "Utilisée"
------
Avatar
sunburn
re,
en fait, la totalité de la macro était :
------
If [G40] = "IS" And [G41] = "Normal" Then: [G42] = "2065": [G43] = "2050"
If [G40] = "IS" And [G41] = "Simplifié" Then: [G42] = "2065": [G43] = "2033"
If [G40] = "IS" And [G41] = "N/A" Then: [G42] = "ERREUR": [G43] = "ERREUR"
If [G40] = "IS" Then: Sheets("80").Range("H17") = "NA":
Sheets("80").Range("H18") = "NA": Sheets("80").Range("H24") = "80_21":
Sheets("80").Range("H26") = "80_20": Sheets("80_11").Range("A4") = "NA":
Sheets("80_21").Range("A4") = "Utilisée"
----
ça change peut être quelque chose dans la macro que tu m'a écrite ?
YANN

"MichDenis" wrote:

Bonjour,

ce n'est pas nécessaire plus court, mais plus lisible !

Application.ScreenUpdating = False
If UCase([G40]) = "IS" And _
UCase([G41]) = UCase("Normal") Then
[G42] = "2065"
[G43] = "2050"
ElseIf [G40] = "IS" Then
With Sheets("80")
.Range("A4,H17:H18") = "NA"
.Range("H24") = "80_21"
.Range("H26") = "80_20"
End With
Sheets("80_21").Range("A4") = "Utilisée"
End If
Application.ScreenUpdating = True



Avatar
sunburn
re,
je précise, avec plusieurs autre choix concernant la valeur de G40 et G41
notamment....., mais la cosntruction est la même.
YANN

"MichDenis" wrote:

Bonjour,

ce n'est pas nécessaire plus court, mais plus lisible !

Application.ScreenUpdating = False
If UCase([G40]) = "IS" And _
UCase([G41]) = UCase("Normal") Then
[G42] = "2065"
[G43] = "2050"
ElseIf [G40] = "IS" Then
With Sheets("80")
.Range("A4,H17:H18") = "NA"
.Range("H24") = "80_21"
.Range("H26") = "80_20"
End With
Sheets("80_21").Range("A4") = "Utilisée"
End If
Application.ScreenUpdating = True




"sunburn" a écrit dans le message de groupe de
discussion :
Bonjour,
je souhaite simplifier une macro, qui est dans le code de ma feuille nommée
"DA"
j'ai rajouté la dernière ligne à une macro existante. la première ligne, les
cellules sont celles de la feuille active. Donc moi j'ai précisé la feuille
pour la seconde ligne. ça fonctionne, mais y-a-t-il mieux ?

Merci.
YANN
----
Application.ScreenUpdating = False
If [G40] = "IS" And [G41] = "Normal" Then: [G42] = "2065": [G43] = "2050"
If [G40] = "IS" Then: Sheets("80").Range("H17") = "NA":
Sheets("80").Range("H18") = "NA": Sheets("80").Range("H24") = "80_21":
Sheets("80").Range("H26") = "80_20": Sheets("80_11").Range("A4") = "NA":
Sheets("80_21").Range("A4") = "Utilisée"
------




Avatar
MichDenis
Tu as le principe dans mon message précédent...
tu peux ajouter des "ElseIf" autant que tu désire !

Fais-toi confiance, tu peux le faire !



"sunburn" a écrit dans le message de groupe de
discussion :
re,
je précise, avec plusieurs autre choix concernant la valeur de G40 et G41
notamment....., mais la cosntruction est la même.
YANN

"MichDenis" wrote:

Bonjour,

ce n'est pas nécessaire plus court, mais plus lisible !

Application.ScreenUpdating = False
If UCase([G40]) = "IS" And _
UCase([G41]) = UCase("Normal") Then
[G42] = "2065"
[G43] = "2050"
ElseIf [G40] = "IS" Then
With Sheets("80")
.Range("A4,H17:H18") = "NA"
.Range("H24") = "80_21"
.Range("H26") = "80_20"
End With
Sheets("80_21").Range("A4") = "Utilisée"
End If
Application.ScreenUpdating = True




"sunburn" a écrit dans le message de groupe de
discussion :
Bonjour,
je souhaite simplifier une macro, qui est dans le code de ma feuille nommée
"DA"
j'ai rajouté la dernière ligne à une macro existante. la première ligne, les
cellules sont celles de la feuille active. Donc moi j'ai précisé la feuille
pour la seconde ligne. ça fonctionne, mais y-a-t-il mieux ?

Merci.
YANN
----
Application.ScreenUpdating = False
If [G40] = "IS" And [G41] = "Normal" Then: [G42] = "2065": [G43] = "2050"
If [G40] = "IS" Then: Sheets("80").Range("H17") = "NA":
Sheets("80").Range("H18") = "NA": Sheets("80").Range("H24") = "80_21":
Sheets("80").Range("H26") = "80_20": Sheets("80_11").Range("A4") = "NA":
Sheets("80_21").Range("A4") = "Utilisée"
------




Avatar
sunburn
Ok,
alors je test, et je reviens si j'y arrive pas, mais j epositive : je vais
yu arriver.
merci.
YANN

"MichDenis" wrote:

Tu as le principe dans mon message précédent...
tu peux ajouter des "ElseIf" autant que tu désire !

Fais-toi confiance, tu peux le faire !



"sunburn" a écrit dans le message de groupe de
discussion :
re,
je précise, avec plusieurs autre choix concernant la valeur de G40 et G41
notamment....., mais la cosntruction est la même.
YANN

"MichDenis" wrote:

> Bonjour,
>
> ce n'est pas nécessaire plus court, mais plus lisible !
>
> Application.ScreenUpdating = False
> If UCase([G40]) = "IS" And _
> UCase([G41]) = UCase("Normal") Then
> [G42] = "2065"
> [G43] = "2050"
> ElseIf [G40] = "IS" Then
> With Sheets("80")
> .Range("A4,H17:H18") = "NA"
> .Range("H24") = "80_21"
> .Range("H26") = "80_20"
> End With
> Sheets("80_21").Range("A4") = "Utilisée"
> End If
> Application.ScreenUpdating = True
>
>
>
>
> "sunburn" a écrit dans le message de groupe de
> discussion :
> Bonjour,
> je souhaite simplifier une macro, qui est dans le code de ma feuille nommée
> "DA"
> j'ai rajouté la dernière ligne à une macro existante. la première ligne, les
> cellules sont celles de la feuille active. Donc moi j'ai précisé la feuille
> pour la seconde ligne. ça fonctionne, mais y-a-t-il mieux ?
>
> Merci.
> YANN
> ----
> Application.ScreenUpdating = False
> If [G40] = "IS" And [G41] = "Normal" Then: [G42] = "2065": [G43] = "2050"
> If [G40] = "IS" Then: Sheets("80").Range("H17") = "NA":
> Sheets("80").Range("H18") = "NA": Sheets("80").Range("H24") = "80_21":
> Sheets("80").Range("H26") = "80_20": Sheets("80_11").Range("A4") = "NA":
> Sheets("80_21").Range("A4") = "Utilisée"
> ------
>
>



Avatar
sunburn
re,
j'ai suivi tes conseils, et j'ai construit ma macro.
en fait y'a que le dernier elseif qui ne fonctionne pas . Je crois
comprendre que c'est normal, car elseif ne convient pas ici. Que dois-je
metter alors ?
merci de ton aide.
YANN

----
If UCase([G40]) = "IR" And UCase([G41]) = UCase("Normal") Then
[G42] = "2031"
[G43] = "2050"
ElseIf UCase([G40]) = "IR" And UCase([G41]) = UCase("Simplifié") Then
[G42] = "2031"
[G43] = "2033"
ElseIf UCase([G40]) = "IR" And UCase([G41]) = UCase("N/A") Then
[G42] = "ERREUR"
[G43] = "ERREUR"
ElseIf [G40] = "IR" Then
With Sheets("80") 'mise à jour des feuilles dans la page maitresse 80
.Range("H24,H26") = "NA"
.Range("H17") = "80_11"
.Range("H18") = "80_20"
End With
Sheets("80_11").Range("A4") = "Utilisée" 'mise à jour de l'état de la
feuille
Sheets("80_21").Range("A4") = "NA"
End If
------
Avatar
sunburn
c'est bon, j'ai trouvé.
merci de ton aide.

"MichDenis" wrote:

Tu as le principe dans mon message précédent...
tu peux ajouter des "ElseIf" autant que tu désire !

Fais-toi confiance, tu peux le faire !



"sunburn" a écrit dans le message de groupe de
discussion :
re,
je précise, avec plusieurs autre choix concernant la valeur de G40 et G41
notamment....., mais la cosntruction est la même.
YANN

"MichDenis" wrote:

> Bonjour,
>
> ce n'est pas nécessaire plus court, mais plus lisible !
>
> Application.ScreenUpdating = False
> If UCase([G40]) = "IS" And _
> UCase([G41]) = UCase("Normal") Then
> [G42] = "2065"
> [G43] = "2050"
> ElseIf [G40] = "IS" Then
> With Sheets("80")
> .Range("A4,H17:H18") = "NA"
> .Range("H24") = "80_21"
> .Range("H26") = "80_20"
> End With
> Sheets("80_21").Range("A4") = "Utilisée"
> End If
> Application.ScreenUpdating = True
>
>
>
>
> "sunburn" a écrit dans le message de groupe de
> discussion :
> Bonjour,
> je souhaite simplifier une macro, qui est dans le code de ma feuille nommée
> "DA"
> j'ai rajouté la dernière ligne à une macro existante. la première ligne, les
> cellules sont celles de la feuille active. Donc moi j'ai précisé la feuille
> pour la seconde ligne. ça fonctionne, mais y-a-t-il mieux ?
>
> Merci.
> YANN
> ----
> Application.ScreenUpdating = False
> If [G40] = "IS" And [G41] = "Normal" Then: [G42] = "2065": [G43] = "2050"
> If [G40] = "IS" Then: Sheets("80").Range("H17") = "NA":
> Sheets("80").Range("H18") = "NA": Sheets("80").Range("H24") = "80_21":
> Sheets("80").Range("H26") = "80_20": Sheets("80_11").Range("A4") = "NA":
> Sheets("80_21").Range("A4") = "Utilisée"
> ------
>
>