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

Comment alléger une macro ?

4 réponses
Avatar
Thierry
Bonsoir,
j'aimerai alléger la macro suivante en passant par une boucle For - Next et
là je sèche !

Module1
---------
Public Const RshBD1 = 34
Public Const RshBD2 = 35
Public Const RshBD3 = 36
Public sh As String
Public shP As Worksheet 'Paramètres
Public shBD1 As Worksheet ' BD1
Public shBD2 As Worksheet ' BD1
Public shBD3 As Worksheet ' BD1

Module2
---------
Sub test()
Set shP = Sheets(P)
If shP.Cells(RshBD1, (Page + 2) * 2) <> "" Then
sh = shP.Cells(RshBD1, (Page + 2) * 2)
Set shBD1 = Sheets(sh)
End If
If shP.Cells(RshBD2, (Page + 2) * 2) <> "" Then
sh = shP.Cells(RshBD2, (Page + 2) * 2)
Set shBD2 = Sheets(sh)
End If
If shP.Cells(RshBD3, (Page + 2) * 2) <> "" Then
sh = shP.Cells(RshBD3, (Page + 2) * 2)
Set shBD3 = Sheets(sh)
End If
End Sub

J'ai essayé, mais sans succès, le code suivant :
VBA me renvoi "Incompatibilité de type"
Je ne sai comment déclarer la variable A, je pense que le problème vient de
là mais je n'en suis pas sûr.

Sub test()
Set shP = Sheets(P)
For i=1 to 3
A=("RshBD" & i)
If shP.Cells(R, (Page + 2) * 2) <> "" Then
sh = shP.Cells(R, (Page + 2) * 2)
Select Case Page
Case 1
Set shBD1 = Sheets(sh)
Case 2
Set shBD2 = Sheets(sh)
Case 3
Set shBD3 = Sheets(sh)
End Select
End If
Next i
End Sub

Quelqu'un pourrait m'expliquer où est le problème ?

Cordialement,
Thierry.

4 réponses

Avatar
isabelle
bonjour Thierry,

peut être faudrait t'il remplacer A par R ou R par A ...

A=("RshBD" & i)
If shP.Cells(R, (Page + 2) * 2) <> "" Then

isabelle

Bonsoir,
j'aimerai alléger la macro suivante en passant par une boucle For - Next et
là je sèche !

Module1
---------
Public Const RshBD1 = 34
Public Const RshBD2 = 35
Public Const RshBD3 = 36
Public sh As String
Public shP As Worksheet 'Paramètres
Public shBD1 As Worksheet ' BD1
Public shBD2 As Worksheet ' BD1
Public shBD3 As Worksheet ' BD1

Module2
---------
Sub test()
Set shP = Sheets(P)
If shP.Cells(RshBD1, (Page + 2) * 2) <> "" Then
sh = shP.Cells(RshBD1, (Page + 2) * 2)
Set shBD1 = Sheets(sh)
End If
If shP.Cells(RshBD2, (Page + 2) * 2) <> "" Then
sh = shP.Cells(RshBD2, (Page + 2) * 2)
Set shBD2 = Sheets(sh)
End If
If shP.Cells(RshBD3, (Page + 2) * 2) <> "" Then
sh = shP.Cells(RshBD3, (Page + 2) * 2)
Set shBD3 = Sheets(sh)
End If
End Sub

J'ai essayé, mais sans succès, le code suivant :
VBA me renvoi "Incompatibilité de type"
Je ne sai comment déclarer la variable A, je pense que le problème vient de
là mais je n'en suis pas sûr.

Sub test()
Set shP = Sheets(P)
For i=1 to 3
A=("RshBD" & i)
If shP.Cells(R, (Page + 2) * 2) <> "" Then
sh = shP.Cells(R, (Page + 2) * 2)
Select Case Page
Case 1
Set shBD1 = Sheets(sh)
Case 2
Set shBD2 = Sheets(sh)
Case 3
Set shBD3 = Sheets(sh)
End Select
End If
Next i
End Sub

Quelqu'un pourrait m'expliquer où est le problème ?

Cordialement,
Thierry.





Avatar
Thierry
Bonjour Isabelle,
merci pour ta réponse.
C'est une coquille de ma pars lors de la saisie.
Il faut lire R=("RshBD" & i).
Mais VBA me renvoi toujours "Incompatibilité de type".
Je pense que cela doit provenir de la déclaration de la variable R,
seulement, là, je sèche !
A tu une idée ?

Thierry.


"isabelle" a écrit dans le message de news:
#0Jj#
bonjour Thierry,

peut être faudrait t'il remplacer A par R ou R par A ...

A=("RshBD" & i)
If shP.Cells(R, (Page + 2) * 2) <> "" Then

isabelle

Bonsoir,
j'aimerai alléger la macro suivante en passant par une boucle For - Next
et


là je sèche !

Module1
---------
Public Const RshBD1 = 34
Public Const RshBD2 = 35
Public Const RshBD3 = 36
Public sh As String
Public shP As Worksheet 'Paramètres
Public shBD1 As Worksheet ' BD1
Public shBD2 As Worksheet ' BD1
Public shBD3 As Worksheet ' BD1

Module2
---------
Sub test()
Set shP = Sheets(P)
If shP.Cells(RshBD1, (Page + 2) * 2) <> "" Then
sh = shP.Cells(RshBD1, (Page + 2) * 2)
Set shBD1 = Sheets(sh)
End If
If shP.Cells(RshBD2, (Page + 2) * 2) <> "" Then
sh = shP.Cells(RshBD2, (Page + 2) * 2)
Set shBD2 = Sheets(sh)
End If
If shP.Cells(RshBD3, (Page + 2) * 2) <> "" Then
sh = shP.Cells(RshBD3, (Page + 2) * 2)
Set shBD3 = Sheets(sh)
End If
End Sub

J'ai essayé, mais sans succès, le code suivant :
VBA me renvoi "Incompatibilité de type"
Je ne sai comment déclarer la variable A, je pense que le problème
vient de


là mais je n'en suis pas sûr.

Sub test()
Set shP = Sheets(P)
For i=1 to 3
A=("RshBD" & i)
If shP.Cells(R, (Page + 2) * 2) <> "" Then
sh = shP.Cells(R, (Page + 2) * 2)
Select Case Page
Case 1
Set shBD1 = Sheets(sh)
Case 2
Set shBD2 = Sheets(sh)
Case 3
Set shBD3 = Sheets(sh)
End Select
End If
Next i
End Sub

Quelqu'un pourrait m'expliquer où est le problème ?

Cordialement,
Thierry.







Avatar
isabelle
bonjour Thierry,

dit moi si ça va comme ça ?

Sub test()
Set shP = Sheets(P)
vars = Array(RshBD1, RshBD2, RshBD3)
For i = 0 To 2
R = vars(i)
If shP.Cells(R, (Page + 2) * 2) <> "" Then
sh = shP.Cells(R, (Page + 2) * 2)
Select Case Page
Case 1
Set shBD1 = Sheets(sh)
Case 2
Set shBD2 = Sheets(sh)
Case 3
Set shBD3 = Sheets(sh)
End Select
End If
Next i
End Sub

isabelle

Bonjour Isabelle,
merci pour ta réponse.
C'est une coquille de ma pars lors de la saisie.
Il faut lire R=("RshBD" & i).
Mais VBA me renvoi toujours "Incompatibilité de type".
Je pense que cela doit provenir de la déclaration de la variable R,
seulement, là, je sèche !
A tu une idée ?

Thierry.


"isabelle" a écrit dans le message de news:
#0Jj#
bonjour Thierry,

peut être faudrait t'il remplacer A par R ou R par A ...

A=("RshBD" & i)
If shP.Cells(R, (Page + 2) * 2) <> "" Then

isabelle

Bonsoir,
j'aimerai alléger la macro suivante en passant par une boucle For - Next
et


là je sèche !

Module1
---------
Public Const RshBD1 = 34
Public Const RshBD2 = 35
Public Const RshBD3 = 36
Public sh As String
Public shP As Worksheet 'Paramètres
Public shBD1 As Worksheet ' BD1
Public shBD2 As Worksheet ' BD1
Public shBD3 As Worksheet ' BD1

Module2
---------
Sub test()
Set shP = Sheets(P)
If shP.Cells(RshBD1, (Page + 2) * 2) <> "" Then
sh = shP.Cells(RshBD1, (Page + 2) * 2)
Set shBD1 = Sheets(sh)
End If
If shP.Cells(RshBD2, (Page + 2) * 2) <> "" Then
sh = shP.Cells(RshBD2, (Page + 2) * 2)
Set shBD2 = Sheets(sh)
End If
If shP.Cells(RshBD3, (Page + 2) * 2) <> "" Then
sh = shP.Cells(RshBD3, (Page + 2) * 2)
Set shBD3 = Sheets(sh)
End If
End Sub

J'ai essayé, mais sans succès, le code suivant :
VBA me renvoi "Incompatibilité de type"
Je ne sai comment déclarer la variable A, je pense que le problème
vient de


là mais je n'en suis pas sûr.

Sub test()
Set shP = Sheets(P)
For i=1 to 3
A=("RshBD" & i)
If shP.Cells(R, (Page + 2) * 2) <> "" Then
sh = shP.Cells(R, (Page + 2) * 2)
Select Case Page
Case 1
Set shBD1 = Sheets(sh)
Case 2
Set shBD2 = Sheets(sh)
Case 3
Set shBD3 = Sheets(sh)
End Select
End If
Next i
End Sub

Quelqu'un pourrait m'expliquer où est le problème ?

Cordialement,
Thierry.











Avatar
Thierry
Bonsoir Isabelle,

De cette manière ça fonctionne comme je le désire.

Encore merci pour ton aide.

Cordialement,
Thierry.


"isabelle" a écrit dans le message de news:

bonjour Thierry,

dit moi si ça va comme ça ?

Sub test()
Set shP = Sheets(P)
vars = Array(RshBD1, RshBD2, RshBD3)
For i = 0 To 2
R = vars(i)
If shP.Cells(R, (Page + 2) * 2) <> "" Then
sh = shP.Cells(R, (Page + 2) * 2)
Select Case Page
Case 1
Set shBD1 = Sheets(sh)
Case 2
Set shBD2 = Sheets(sh)
Case 3
Set shBD3 = Sheets(sh)
End Select
End If
Next i
End Sub

isabelle

Bonjour Isabelle,
merci pour ta réponse.
C'est une coquille de ma pars lors de la saisie.
Il faut lire R=("RshBD" & i).
Mais VBA me renvoi toujours "Incompatibilité de type".
Je pense que cela doit provenir de la déclaration de la variable R,
seulement, là, je sèche !
A tu une idée ?

Thierry.


"isabelle" a écrit dans le message de news:
#0Jj#
bonjour Thierry,

peut être faudrait t'il remplacer A par R ou R par A ...

A=("RshBD" & i)
If shP.Cells(R, (Page + 2) * 2) <> "" Then

isabelle

Bonsoir,
j'aimerai alléger la macro suivante en passant par une boucle For -
Next




et
là je sèche !

Module1
---------
Public Const RshBD1 = 34
Public Const RshBD2 = 35
Public Const RshBD3 = 36
Public sh As String
Public shP As Worksheet 'Paramètres
Public shBD1 As Worksheet ' BD1
Public shBD2 As Worksheet ' BD1
Public shBD3 As Worksheet ' BD1

Module2
---------
Sub test()
Set shP = Sheets(P)
If shP.Cells(RshBD1, (Page + 2) * 2) <> "" Then
sh = shP.Cells(RshBD1, (Page + 2) * 2)
Set shBD1 = Sheets(sh)
End If
If shP.Cells(RshBD2, (Page + 2) * 2) <> "" Then
sh = shP.Cells(RshBD2, (Page + 2) * 2)
Set shBD2 = Sheets(sh)
End If
If shP.Cells(RshBD3, (Page + 2) * 2) <> "" Then
sh = shP.Cells(RshBD3, (Page + 2) * 2)
Set shBD3 = Sheets(sh)
End If
End Sub

J'ai essayé, mais sans succès, le code suivant :
VBA me renvoi "Incompatibilité de type"
Je ne sai comment déclarer la variable A, je pense que le problème
vient de


là mais je n'en suis pas sûr.

Sub test()
Set shP = Sheets(P)
For i=1 to 3
A=("RshBD" & i)
If shP.Cells(R, (Page + 2) * 2) <> "" Then
sh = shP.Cells(R, (Page + 2) * 2)
Select Case Page
Case 1
Set shBD1 = Sheets(sh)
Case 2
Set shBD2 = Sheets(sh)
Case 3
Set shBD3 = Sheets(sh)
End Select
End If
Next i
End Sub

Quelqu'un pourrait m'expliquer où est le problème ?

Cordialement,
Thierry.