Est-ce possible de simplifier (résolu)

Cougar

XLDnaute Impliqué
Bonsoir le forum,

Voici une liste de variables Var1 à Var25. Est-il possible de simplifier les lignes de codes pour la déclaration des variables et la recherche des variables dans une liste ?

'déclaration des variables
Sheets("Poste de travail").Select
Range("c2").Select
Var1 = ActiveCell
Var2 = ActiveCell.Offset(1, 0)
Var3 = ActiveCell.Offset(2, 0)
Var4 = ActiveCell.Offset(3, 0)
Var5 = ActiveCell.Offset(4, 0) ''''''''''''''''jusqu'à Var25

'recherche des variables dans la liste
Sheets("Affichage").Select
Range("d2").Select
Do Until ActiveCell = ""
If ActiveCell.Offset(0, -1) = "Var1" Or ActiveCell.Offset(0, -1) = "Var2" _
Or ActiveCell.Offset(0, -1) = "Var3" Or ActiveCell.Offset(0, -1) = "Var4" _
Or ActiveCell.Offset(0, -1) = "Var5" Or ActiveCell.Offset(0, -1) = "Var6" _ '''''''''''''''''''''''''''jusqu'à Var25
Loop

Merci
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Est-ce possible de simplifier

Bonsoir Cougar,

Une déclaration de variable est en général une ligne de code débutant par l'instruction Dim ou Redim.
Votre partie de code 'déclaration des variables ne correspond pas à cette forme.
Cette partie de code affecte aux cellules C2, C3, C4,.., C26 la valeur des variables Var1, Var2, Var3,..., Var25.
On peut donc supposer que vous avez antérieurement déclaré ces 25 variables ou au minimum avoir affecté des valeurs à ces 25 variables. Sinon ces 25 variables ne sont que 25 variables vides.

La seconde partie du code me semble encore plus énigmatique. Dans la boucle (qui à priori me semble inutile) vous utiliser les constantes "Var1", "Var2",..."Var25". Vous semblez confondre les notions de variable Var1, de contenu de la variable Var1 et de la constante texte "Var1".

Il vaudrait mieux expliquer ce que vous cherchez à faire pour nous permettre de vous répondre plus précisément.

A+
 

Cougar

XLDnaute Impliqué
Re : Est-ce possible de simplifier

Bonsoir mapomme,

Effectivement j'ai déclaré les 25 Var (Dim Var1, Var2, ... as integer).
Pour la première partie, j'ai inversé le tout, Var1 = activecell. Je cherchais comment utiliser (si possible)
For i = 1 to 25
var & i = activecell
Activecell.offset(1,0).select
Next i

Pour la 2e partie je dois trouver chacune des Var dans une liste de mot. J'utilisais la forme suivant :
If ActiveCell.Offset(0, -1) = "Chef d'équipe" Or ActiveCell.Offset(0, -1) = "Accessoires" _
Or ActiveCell.Offset(0, -1) = "cisaille #57" Or ActiveCell.Offset(0, -1) = "Emballage" _
Or ActiveCell.Offset(0, -1) = "Cisaille #73" Or ActiveCell.Offset(0, -1) = "Presse #60" _
Or ActiveCell.Offset(0, -1) = "Presse #61" Or ActiveCell.Offset(0, -1) = "Presse #63" _
Or ActiveCell.Offset(0, -1) = "Presse #66" Or ActiveCell.Offset(0, -1) = "Presse ME05" then

Mais si je dois modifier un mot de ma liste, il est plus facile de traiter le tout si le mot en question devient une variable plutôt qu'un mot précis.

Merci
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Est-ce possible de simplifier

Re,

Je comprends mieux. On pourrait utiliser un tableau à 25 éléments déclaré par: Dim Vars (1 to 25).
Par exemple, Vars(7) prend la place de l'ancienne variable Var7.

VB:
Dim Vars(1 To 25) As String, i As Long, Estmembre As Boolean
...
...


With Sheets("Poste de travail").Range("C2")
  For i = 1 To 25: Vars(i) = .Offset(i - 1).Value: Next i
End With
...
...

Estmenbre = False
For i = 1 To 25: Estmembre = Estmembre Or ActiveCell.Offset(, -1) = Vars(i): Next i
If Estmembre Then
  ...
  ...
 

Statistiques des forums

Discussions
312 088
Messages
2 085 202
Membres
102 817
dernier inscrit
Nini668