Comment alléger une macro ?

Le
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.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
isabelle
Le #5180211
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.





Thierry
Le #5178371
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.







isabelle
Le #5177871
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.











Thierry
Le #5177731
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.













Publicité
Poster une réponse
Anonyme