OVH Cloud OVH Cloud

Cells vers Range

2 réponses
Avatar
Joel.ANDRE
Bonsoir,

Désolé, j'ai oublié l'objet dans mon précédebt message, je renvoie par
précaution.

J'améliore un module existant.
Pour le rendre lisible, je transforme les Cells(X,Y) en Range("YX").
Pour les paramètres simples, pas de difficulté.
Par exemple Cells(3,2) devient Range("B,2")

Par contre pour les paramètres suivants :
Cells(PlaceLigne, PlaceColonne) = "PARAMETRES"
Cells(PlaceLigne, PlaceColonne + 1) = "VALEURS"
Cells(PlaceLigne + 1, PlaceColonne) = "Moyenne"
Cells(PlaceLigne + 1, PlaceColonne + 1) = MoyenneSérie
Cells(PlaceLigne + 2, PlaceColonne) = "Ecart"

Est-ce que les transpositions suivantes sont correctes :
Range(PlaceColonne & PlaceLigne) = "PARAMETRES"
Range(PlaceColonne + 1 & PlaceLigne) = "VALEURS"
Range(PlaceColonne & PlaceLigne + 1) = "Moyenne"
Range(PlaceColonne + 1 & PlaceLigne + 1) = MoyenneSérie
Range(PlaceColonne & PlaceLigne + 2) = "Ecart"
sachant que PlaceColonne et PlaceLigne sont des variables.

Merci

2 réponses

Avatar
poy-poy
Bonjour Joel,

Je vois 2 problèmes dans tes formules :
Premièrement, range nécessite d'avoir les colonnes en A...Z et non en
nombre. Il va donc falloire associer le nom alphabétique des colonnes à tes
plages. tu peux aller le cherche par un
cells(plagecolonne,plageligne).address et prendre que la colonne
left(right()) ou en entier et ne pas rajouter la ligne ensuite. Ou encore par
un match ou tu prépares toutes entrées...

Deuxièmement, tu ne peux pas rajouter +1, range ne sait pas faire de calcul.
Donc sit tu le calcules avant ou pendant [ evaluate(plagligne+1)], soit tu
fais un offset (0,1) sur ton range.

Au final, cela vaut'il vraiment le coup ? Si c'est juste pour rendre ton
code plus lisible, cela ne va en fait que le compliquer...
Cela donnerait un truc du genre (en plus si tes colonnes dépassent Z, faut
faire le test pour savoir combien faut garder de caractères avec le left):

range(left(right(cells(1,plagecolonne).address,3),1) &
plageligne).offset(0,1).select
ou
range(cells(plageligne+1,plagecolonne).address,3),1)).select
ou
range(plagecol & evaluate(plageligne+1)).select

avec plagecol = evaluate("match(""" & plagecolonne & """,
{1,5,2},{""A"",""E"",""B""})")

Toujours intéressais ?

Cordialement
Benjamin


Bonsoir,

Désolé, j'ai oublié l'objet dans mon précédebt message, je renvoie par
précaution.

J'améliore un module existant.
Pour le rendre lisible, je transforme les Cells(X,Y) en Range("YX").
Pour les paramètres simples, pas de difficulté.
Par exemple Cells(3,2) devient Range("B,2")

Par contre pour les paramètres suivants :
Cells(PlaceLigne, PlaceColonne) = "PARAMETRES"
Cells(PlaceLigne, PlaceColonne + 1) = "VALEURS"
Cells(PlaceLigne + 1, PlaceColonne) = "Moyenne"
Cells(PlaceLigne + 1, PlaceColonne + 1) = MoyenneSérie
Cells(PlaceLigne + 2, PlaceColonne) = "Ecart"

Est-ce que les transpositions suivantes sont correctes :
Range(PlaceColonne & PlaceLigne) = "PARAMETRES"
Range(PlaceColonne + 1 & PlaceLigne) = "VALEURS"
Range(PlaceColonne & PlaceLigne + 1) = "Moyenne"
Range(PlaceColonne + 1 & PlaceLigne + 1) = MoyenneSérie
Range(PlaceColonne & PlaceLigne + 2) = "Ecart"
sachant que PlaceColonne et PlaceLigne sont des variables.

Merci





Avatar
Joel.ANDRE
Merci Poy-Poy, effectivement, je vais y regarder à deux fois avant de tout
compliquer.

"poy-poy" a écrit dans le message de
news:
Bonjour Joel,

Je vois 2 problèmes dans tes formules :
Premièrement, range nécessite d'avoir les colonnes en A...Z et non en
nombre. Il va donc falloire associer le nom alphabétique des colonnes à
tes

plages. tu peux aller le cherche par un
cells(plagecolonne,plageligne).address et prendre que la colonne
left(right()) ou en entier et ne pas rajouter la ligne ensuite. Ou encore
par

un match ou tu prépares toutes entrées...

Deuxièmement, tu ne peux pas rajouter +1, range ne sait pas faire de
calcul.

Donc sit tu le calcules avant ou pendant [ evaluate(plagligne+1)], soit tu
fais un offset (0,1) sur ton range.

Au final, cela vaut'il vraiment le coup ? Si c'est juste pour rendre ton
code plus lisible, cela ne va en fait que le compliquer...
Cela donnerait un truc du genre (en plus si tes colonnes dépassent Z, faut
faire le test pour savoir combien faut garder de caractères avec le left):

range(left(right(cells(1,plagecolonne).address,3),1) &
plageligne).offset(0,1).select
ou
range(cells(plageligne+1,plagecolonne).address,3),1)).select
ou
range(plagecol & evaluate(plageligne+1)).select

avec plagecol = evaluate("match(""" & plagecolonne & """,
{1,5,2},{""A"",""E"",""B""})")

Toujours intéressais ?

Cordialement
Benjamin


Bonsoir,

Désolé, j'ai oublié l'objet dans mon précédebt message, je renvoie par
précaution.

J'améliore un module existant.
Pour le rendre lisible, je transforme les Cells(X,Y) en Range("YX").
Pour les paramètres simples, pas de difficulté.
Par exemple Cells(3,2) devient Range("B,2")

Par contre pour les paramètres suivants :
Cells(PlaceLigne, PlaceColonne) = "PARAMETRES"
Cells(PlaceLigne, PlaceColonne + 1) = "VALEURS"
Cells(PlaceLigne + 1, PlaceColonne) = "Moyenne"
Cells(PlaceLigne + 1, PlaceColonne + 1) = MoyenneSérie
Cells(PlaceLigne + 2, PlaceColonne) = "Ecart"

Est-ce que les transpositions suivantes sont correctes :
Range(PlaceColonne & PlaceLigne) = "PARAMETRES"
Range(PlaceColonne + 1 & PlaceLigne) = "VALEURS"
Range(PlaceColonne & PlaceLigne + 1) = "Moyenne"
Range(PlaceColonne + 1 & PlaceLigne + 1) = MoyenneSérie
Range(PlaceColonne & PlaceLigne + 2) = "Ecart"
sachant que PlaceColonne et PlaceLigne sont des variables.

Merci