J'ai besoin d'une routine me permettant d'obtenir la plage de cellules
"Plage2" définie comme suit :
"Plage2" est située par rapport à une cellule "Cell2" comme "Plage1"
l'est par rapport à "Cell1".
Les données sont "Cell2" et l'adresse relative de "Plage1"
relativement à "Cell1". Il me faudrait l'adresse absolue de "Plage2".
Je préfererais un solution plus direct que la manipulation de
l'adresse relative en tant que chaîne pour en extraire les valeurs à
introduire dans la méthode Offset.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
AV
Si j'ai compris :
Sub zz_Relatif() rw1 = [Cell1].Row: rw2 = [plage1].Row col1 = [Cell1].Column: col2 = [plage1].Column lng = [plage1].Count - 1 If rw1 < rw2 Then x = -rw2 - rw1 Else x = -(rw1 - rw2) If col1 < col2 Then y = col2 - col1 Else y = -(col1 - col2) On Error Resume Next MsgBox Range(Cells([Cell2].Row + x, [Cell2].Column + y), _ Cells([Cell2].Row + x + lng, [Cell2].Column + y)).Address End Sub
AV
"Th. Flauss" a écrit dans le message news:
J'ai besoin d'une routine me permettant d'obtenir la plage de cellules "Plage2" définie comme suit : "Plage2" est située par rapport à une cellule "Cell2" comme "Plage1" l'est par rapport à "Cell1". Les données sont "Cell2" et l'adresse relative de "Plage1" relativement à "Cell1". Il me faudrait l'adresse absolue de "Plage2".
Je préfererais un solution plus direct que la manipulation de l'adresse relative en tant que chaîne pour en extraire les valeurs à introduire dans la méthode Offset.
Merci par avance de vos solutions ou suggestions.
ThF.
Si j'ai compris :
Sub zz_Relatif()
rw1 = [Cell1].Row: rw2 = [plage1].Row
col1 = [Cell1].Column: col2 = [plage1].Column
lng = [plage1].Count - 1
If rw1 < rw2 Then x = -rw2 - rw1 Else x = -(rw1 - rw2)
If col1 < col2 Then y = col2 - col1 Else y = -(col1 - col2)
On Error Resume Next
MsgBox Range(Cells([Cell2].Row + x, [Cell2].Column + y), _
Cells([Cell2].Row + x + lng, [Cell2].Column + y)).Address
End Sub
AV
"Th. Flauss" <philomele@wanadoo.fr> a écrit dans le message news:
b53def4e.0307241458.5c99055a@posting.google.com...
J'ai besoin d'une routine me permettant d'obtenir la plage de cellules
"Plage2" définie comme suit :
"Plage2" est située par rapport à une cellule "Cell2" comme "Plage1"
l'est par rapport à "Cell1".
Les données sont "Cell2" et l'adresse relative de "Plage1"
relativement à "Cell1". Il me faudrait l'adresse absolue de "Plage2".
Je préfererais un solution plus direct que la manipulation de
l'adresse relative en tant que chaîne pour en extraire les valeurs à
introduire dans la méthode Offset.
Sub zz_Relatif() rw1 = [Cell1].Row: rw2 = [plage1].Row col1 = [Cell1].Column: col2 = [plage1].Column lng = [plage1].Count - 1 If rw1 < rw2 Then x = -rw2 - rw1 Else x = -(rw1 - rw2) If col1 < col2 Then y = col2 - col1 Else y = -(col1 - col2) On Error Resume Next MsgBox Range(Cells([Cell2].Row + x, [Cell2].Column + y), _ Cells([Cell2].Row + x + lng, [Cell2].Column + y)).Address End Sub
AV
"Th. Flauss" a écrit dans le message news:
J'ai besoin d'une routine me permettant d'obtenir la plage de cellules "Plage2" définie comme suit : "Plage2" est située par rapport à une cellule "Cell2" comme "Plage1" l'est par rapport à "Cell1". Les données sont "Cell2" et l'adresse relative de "Plage1" relativement à "Cell1". Il me faudrait l'adresse absolue de "Plage2".
Je préfererais un solution plus direct que la manipulation de l'adresse relative en tant que chaîne pour en extraire les valeurs à introduire dans la méthode Offset.
Merci par avance de vos solutions ou suggestions.
ThF.
philomele
"AV" wrote in message news:<#...
Si j'ai compris :
Sub zz_Relatif() rw1 = [Cell1].Row: rw2 = [plage1].Row col1 = [Cell1].Column: col2 = [plage1].Column lng = [plage1].Count - 1 If rw1 < rw2 Then x = -rw2 - rw1 Else x = -(rw1 - rw2) If col1 < col2 Then y = col2 - col1 Else y = -(col1 - col2) On Error Resume Next MsgBox Range(Cells([Cell2].Row + x, [Cell2].Column + y), _ Cells([Cell2].Row + x + lng, [Cell2].Column + y)).Address End Sub
AV
Ce n'est pas exactement la solution que je recherche : vous supposez connue l'adresse absolue de "Plage1".
En fait, les seules données sont les adresses absolues de "Cell1", "Cell2" & l'adresse relative de "Plage1" obtenue au moyen de
J'ajoute que je préfère une solution sans extraction de sous-chaînes dans l'adresse relative.
Merci par avance de votre persévérance.
AV
Ce n'est pas exactement la solution que je recherche : vous supposez connue l'adresse absolue de "Plage1".
** Pas du tout ! Les variables rw1;rw2;col1;col2 donnent le décalage par l'intermédiaire des calculs dans les 2 "If...." qui suivent
Le problème est d'otenir l'adresse absolue de "Plage2" placée relativement à "Cell2" comme "Plage1" est placée relativement à "Cell1". ** C'est le résultat de la macro proposée !
J'ajoute que je préfère une solution sans extraction de sous-chaînes dans l'adresse relative. ** Il n'y a pas d'extraction de sous-chaînes dans la soluce proposée
La seule interprétation (à défaut de précisions) : j'ai supposé les plages Plage1 et Plage2 sur x lignes et une seule colonne
AV
Ce n'est pas exactement la solution que je recherche : vous supposez
connue l'adresse absolue de "Plage1".
** Pas du tout !
Les variables rw1;rw2;col1;col2 donnent le décalage par l'intermédiaire des
calculs dans les 2 "If...." qui suivent
Le problème est d'otenir l'adresse absolue de "Plage2" placée
relativement à "Cell2" comme "Plage1" est placée relativement à
"Cell1".
** C'est le résultat de la macro proposée !
J'ajoute que je préfère une solution sans extraction de sous-chaînes
dans l'adresse relative.
** Il n'y a pas d'extraction de sous-chaînes dans la soluce proposée
La seule interprétation (à défaut de précisions) : j'ai supposé les plages
Plage1 et Plage2 sur x lignes et une seule colonne
Ce n'est pas exactement la solution que je recherche : vous supposez connue l'adresse absolue de "Plage1".
** Pas du tout ! Les variables rw1;rw2;col1;col2 donnent le décalage par l'intermédiaire des calculs dans les 2 "If...." qui suivent
Le problème est d'otenir l'adresse absolue de "Plage2" placée relativement à "Cell2" comme "Plage1" est placée relativement à "Cell1". ** C'est le résultat de la macro proposée !
J'ajoute que je préfère une solution sans extraction de sous-chaînes dans l'adresse relative. ** Il n'y a pas d'extraction de sous-chaînes dans la soluce proposée
La seule interprétation (à défaut de précisions) : j'ai supposé les plages Plage1 et Plage2 sur x lignes et une seule colonne
AV
philomele
"AV" wrote in message news:...
** Pas du tout ! Les variables rw1;rw2;col1;col2 donnent le décalage par l'intermédiaire des calculs dans les 2 "If...." qui suivent
On se comprend mal : écrire rw2 = [plage1].Row c'est bien récupérer la référence de la ligne en valeur absolue ou relativement à la cellule [A1]. Idem pour col2. Ce sont deux éléments qui ne font pas partie des données du problème. Sinon, il suffirait d'utiliser Cells(rw2,col2).Resize([Plage1].Rows, [Plage1].Columns]).Offset([Cell2].Row - [Cell1].Row, [Cell2].Column - [Cell1].Column).Address pour obtenir l'adresse absolue de "Plage2".
Le problème reste entier.
ThF.
"AV" <alain.vallon@wanadoo.fr> wrote in message news:<OZJqY19UDHA.2344@TK2MSFTNGP09.phx.gbl>...
** Pas du tout !
Les variables rw1;rw2;col1;col2 donnent le décalage par l'intermédiaire des
calculs dans les 2 "If...." qui suivent
On se comprend mal : écrire rw2 = [plage1].Row c'est bien récupérer la
référence de la ligne en valeur absolue ou relativement à la cellule
[A1]. Idem pour col2.
Ce sont deux éléments qui ne font pas partie des données du problème.
Sinon, il suffirait d'utiliser
Cells(rw2,col2).Resize([Plage1].Rows,
[Plage1].Columns]).Offset([Cell2].Row - [Cell1].Row, [Cell2].Column -
[Cell1].Column).Address pour obtenir l'adresse absolue de "Plage2".
** Pas du tout ! Les variables rw1;rw2;col1;col2 donnent le décalage par l'intermédiaire des calculs dans les 2 "If...." qui suivent
On se comprend mal : écrire rw2 = [plage1].Row c'est bien récupérer la référence de la ligne en valeur absolue ou relativement à la cellule [A1]. Idem pour col2. Ce sont deux éléments qui ne font pas partie des données du problème. Sinon, il suffirait d'utiliser Cells(rw2,col2).Resize([Plage1].Rows, [Plage1].Columns]).Offset([Cell2].Row - [Cell1].Row, [Cell2].Column - [Cell1].Column).Address pour obtenir l'adresse absolue de "Plage2".