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

Adresse et sélection de plage

12 réponses
Avatar
LogA3
Bonjour,

Tout d'abord, nouvel utilisateur, je tiens à vous féliciter pour ce forum,
c'est une vréritable mine d'or...

Ensuite, je recontre un petit problème et j'aimerais avoir votre avis.

D'un point de vue pratique, lorsqu'on sélectionne une plage de cellules et
qu'on cherche à récupèrer son adresse, on n'obtient que l'adresse de la
première cellule sélectionnée.

Pour des raisons pratiques j'aimerais récupérer le numéro de la première et
de la
dernière ligne de la sélection. Le simple recours à l'utilisation de la
propriété count n'est, en soit, pas suffisant.

Je m'explique : Soit la plage de cellules à sélectionner = "A1:B9"

- Si l'utilisateur commence la sélection de la plage de cellules par la
cellule "A1", l'adresse retournée pour la plage est "A1". Il me suffirait
donc d'ajouter le nombre de lignes de ma sélection (nombre obtenu par un
count) - 1 à "1" pour récupérer "9". C'est logique.

- Si, maintenant, l'utilisateur commence la sélection par la cellule "B9",
l'adresse retournée pour la plage sera "B9". Et comme je n'ai aucun contrôle
sur le sens dans lequel la sélection a été effectuée, je ne peux pas changer
mon calcul en disant : "9" est la dernière ligne, donc "9" + 1 - le nombre de
lignes de ma sélection est la première ligne.

Bref, je suis dans une impasse.
J'ai bien essayé de réécrire mon code pour ne plus avoir à recourrir à une
telle donnée, mais je n'ai pas trouvé de solution "facile".

Si l'un d'entre vous avait une idée...

Bonne nuit,

Log

10 réponses

1 2
Avatar
michdenis
Bonjour LogA3,

essaie ceci :

'------------------------------
Sub test()
Dim Rg As Range
Dim First As String, Last As String

If TypeName(Selection) = "Range" Then
Set Rg = Selection
First = Rg(1, 1).Address(0, 0)
Last = Rg(Rg.Rows.Count, Rg.Columns.Count).Address(0, 0)
MsgBox "Première cellule de la sélection : " & First & _
vbCrLf & "Dernière cellule de la sélection : " & Last
End If

End Sub
'------------------------------


Salutations!


"LogA3" a écrit dans le message de news:
Bonjour,

Tout d'abord, nouvel utilisateur, je tiens à vous féliciter pour ce forum,
c'est une vréritable mine d'or...

Ensuite, je recontre un petit problème et j'aimerais avoir votre avis.

D'un point de vue pratique, lorsqu'on sélectionne une plage de cellules et
qu'on cherche à récupèrer son adresse, on n'obtient que l'adresse de la
première cellule sélectionnée.

Pour des raisons pratiques j'aimerais récupérer le numéro de la première et
de la
dernière ligne de la sélection. Le simple recours à l'utilisation de la
propriété count n'est, en soit, pas suffisant.

Je m'explique : Soit la plage de cellules à sélectionner = "A1:B9"

- Si l'utilisateur commence la sélection de la plage de cellules par la
cellule "A1", l'adresse retournée pour la plage est "A1". Il me suffirait
donc d'ajouter le nombre de lignes de ma sélection (nombre obtenu par un
count) - 1 à "1" pour récupérer "9". C'est logique.

- Si, maintenant, l'utilisateur commence la sélection par la cellule "B9",
l'adresse retournée pour la plage sera "B9". Et comme je n'ai aucun contrôle
sur le sens dans lequel la sélection a été effectuée, je ne peux pas changer
mon calcul en disant : "9" est la dernière ligne, donc "9" + 1 - le nombre de
lignes de ma sélection est la première ligne.

Bref, je suis dans une impasse.
J'ai bien essayé de réécrire mon code pour ne plus avoir à recourrir à une
telle donnée, mais je n'ai pas trouvé de solution "facile".

Si l'un d'entre vous avait une idée...

Bonne nuit,

Log
Avatar
lSteph
Bonjour Log3,

Tu veux sans doute parler de l'indicateur à gauche en haut, c'est normal
il donne la cellule active ou le nom d'une plage (si elle en a un)
Sinon en vba :

Selection.address

Si tu mets ceci tu as bien la première et la dernière !?

Sub test()
MsgBox Selection.Address
End Sub

Cordialement.

lSteph
"LogA3" a écrit dans le message de news:

Bonjour,

Tout d'abord, nouvel utilisateur, je tiens à vous féliciter pour ce forum,
c'est une vréritable mine d'or...

Ensuite, je recontre un petit problème et j'aimerais avoir votre avis.

D'un point de vue pratique, lorsqu'on sélectionne une plage de cellules et
qu'on cherche à récupèrer son adresse, on n'obtient que l'adresse de la
première cellule sélectionnée.

Pour des raisons pratiques j'aimerais récupérer le numéro de la première
et
de la
dernière ligne de la sélection. Le simple recours à l'utilisation de la
propriété count n'est, en soit, pas suffisant.

Je m'explique : Soit la plage de cellules à sélectionner = "A1:B9"

- Si l'utilisateur commence la sélection de la plage de cellules par la
cellule "A1", l'adresse retournée pour la plage est "A1". Il me suffirait
donc d'ajouter le nombre de lignes de ma sélection (nombre obtenu par un
count) - 1 à "1" pour récupérer "9". C'est logique.

- Si, maintenant, l'utilisateur commence la sélection par la cellule "B9",
l'adresse retournée pour la plage sera "B9". Et comme je n'ai aucun
contrôle
sur le sens dans lequel la sélection a été effectuée, je ne peux pas
changer
mon calcul en disant : "9" est la dernière ligne, donc "9" + 1 - le nombre
de
lignes de ma sélection est la première ligne.

Bref, je suis dans une impasse.
J'ai bien essayé de réécrire mon code pour ne plus avoir à recourrir à une
telle donnée, mais je n'ai pas trouvé de solution "facile".

Si l'un d'entre vous avait une idée...

Bonne nuit,

Log


Avatar
lSteph
ReBonjour,
Sinon on peut à la limite mettre ceci qui affichera l'addresse dans la
barre d'état:
'
'''***dans le code de la feuille**
Private Sub Worksheet_Activate()
Application.StatusBar = Selection.Address
End Sub

Private Sub Worksheet_Deactivate()
Application.StatusBar = False
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.StatusBar = Selection.Address
End Sub
'''*****

'lSteph

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

Bonjour,

Tout d'abord, nouvel utilisateur, je tiens à vous féliciter pour ce forum,
c'est une vréritable mine d'or...

Ensuite, je recontre un petit problème et j'aimerais avoir votre avis.

D'un point de vue pratique, lorsqu'on sélectionne une plage de cellules et
qu'on cherche à récupèrer son adresse, on n'obtient que l'adresse de la
première cellule sélectionnée.

Pour des raisons pratiques j'aimerais récupérer le numéro de la première
et
de la
dernière ligne de la sélection. Le simple recours à l'utilisation de la
propriété count n'est, en soit, pas suffisant.

Je m'explique : Soit la plage de cellules à sélectionner = "A1:B9"

- Si l'utilisateur commence la sélection de la plage de cellules par la
cellule "A1", l'adresse retournée pour la plage est "A1". Il me suffirait
donc d'ajouter le nombre de lignes de ma sélection (nombre obtenu par un
count) - 1 à "1" pour récupérer "9". C'est logique.

- Si, maintenant, l'utilisateur commence la sélection par la cellule "B9",
l'adresse retournée pour la plage sera "B9". Et comme je n'ai aucun
contrôle
sur le sens dans lequel la sélection a été effectuée, je ne peux pas
changer
mon calcul en disant : "9" est la dernière ligne, donc "9" + 1 - le nombre
de
lignes de ma sélection est la première ligne.

Bref, je suis dans une impasse.
J'ai bien essayé de réécrire mon code pour ne plus avoir à recourrir à une
telle donnée, mais je n'ai pas trouvé de solution "facile".

Si l'un d'entre vous avait une idée...

Bonne nuit,

Log


Avatar
Ange Ounis
D'un point de vue pratique, lorsqu'on sélectionne une plage de cellules et
qu'on cherche à récupèrer son adresse, on n'obtient que l'adresse de la
première cellule sélectionnée.


Ben, pas vraiment si tu utilises la propriété Address de la plage (voir les
réponses de mes petits camarades).
A partir de cette adresse, si tu travailles avec Excel 2000 ou plus récent, tu
peux récupérer facilement la première ligne et la dernière, à l'aide de la
fonction Split :

'''''''''''''''''
Sub essai()
Dim Plage As Range, Adr$, S$
Set Plage = Range("A1:B9")
Adr = Plage.Address
S = "Adresse : " & Adr & vbLf
S = S & "Première ligne : " & _
Left(Split(Adr, "$")(2), Len(Split(Adr, "$")(2)) - 1)
S = S & vbLf & "Dernière ligne : " & Split(Adr, "$")(4)
MsgBox S
End Sub
'''''''''''''''''

----------
Ange Ounis
----------

Bonjour,

Tout d'abord, nouvel utilisateur, je tiens à vous féliciter pour ce forum,
c'est une vréritable mine d'or...

Ensuite, je recontre un petit problème et j'aimerais avoir votre avis.

D'un point de vue pratique, lorsqu'on sélectionne une plage de cellules et
qu'on cherche à récupèrer son adresse, on n'obtient que l'adresse de la
première cellule sélectionnée.

Pour des raisons pratiques j'aimerais récupérer le numéro de la première et
de la
dernière ligne de la sélection. Le simple recours à l'utilisation de la
propriété count n'est, en soit, pas suffisant.

Je m'explique : Soit la plage de cellules à sélectionner = "A1:B9"

- Si l'utilisateur commence la sélection de la plage de cellules par la
cellule "A1", l'adresse retournée pour la plage est "A1". Il me suffirait
donc d'ajouter le nombre de lignes de ma sélection (nombre obtenu par un
count) - 1 à "1" pour récupérer "9". C'est logique.

- Si, maintenant, l'utilisateur commence la sélection par la cellule "B9",
l'adresse retournée pour la plage sera "B9". Et comme je n'ai aucun contrôle
sur le sens dans lequel la sélection a été effectuée, je ne peux pas changer
mon calcul en disant : "9" est la dernière ligne, donc "9" + 1 - le nombre de
lignes de ma sélection est la première ligne.

Bref, je suis dans une impasse.
J'ai bien essayé de réécrire mon code pour ne plus avoir à recourrir à une
telle donnée, mais je n'ai pas trouvé de solution "facile".

Si l'un d'entre vous avait une idée...

Bonne nuit,

Log


Avatar
lSteph
Bonjour Fred,

J'ai cherché un truc , sans y parvenir
et je crois qu'Alain t'avait déjà posé cette question, alors au cas où le
sujet
ait abouti depuis...
Comment ajouter aux fonction de la Barre d'Etat exemple une fonction adresse
que l'on pourrait cocher en lieu et place de somme, nombre ou moyenne.
Merci d'avance .

Stéphane

"Ange Ounis" a écrit dans le message de news:

D'un point de vue pratique, lorsqu'on sélectionne une plage de cellules
et
qu'on cherche à récupèrer son adresse, on n'obtient que l'adresse de la
première cellule sélectionnée.


Ben, pas vraiment si tu utilises la propriété Address de la plage (voir
les réponses de mes petits camarades).
A partir de cette adresse, si tu travailles avec Excel 2000 ou plus
récent, tu peux récupérer facilement la première ligne et la dernière, à
l'aide de la fonction Split :

'''''''''''''''''
Sub essai()
Dim Plage As Range, Adr$, S$
Set Plage = Range("A1:B9")
Adr = Plage.Address
S = "Adresse : " & Adr & vbLf
S = S & "Première ligne : " & _
Left(Split(Adr, "$")(2), Len(Split(Adr, "$")(2)) - 1)
S = S & vbLf & "Dernière ligne : " & Split(Adr, "$")(4)
MsgBox S
End Sub
'''''''''''''''''

----------
Ange Ounis
----------

Bonjour,

Tout d'abord, nouvel utilisateur, je tiens à vous féliciter pour ce
forum, c'est une vréritable mine d'or...

Ensuite, je recontre un petit problème et j'aimerais avoir votre avis.

D'un point de vue pratique, lorsqu'on sélectionne une plage de cellules
et qu'on cherche à récupèrer son adresse, on n'obtient que l'adresse de
la première cellule sélectionnée.

Pour des raisons pratiques j'aimerais récupérer le numéro de la première
et de la
dernière ligne de la sélection. Le simple recours à l'utilisation de la
propriété count n'est, en soit, pas suffisant.

Je m'explique : Soit la plage de cellules à sélectionner = "A1:B9"

- Si l'utilisateur commence la sélection de la plage de cellules par la
cellule "A1", l'adresse retournée pour la plage est "A1". Il me
suffirait donc d'ajouter le nombre de lignes de ma sélection (nombre
obtenu par un count) - 1 à "1" pour récupérer "9". C'est logique.

- Si, maintenant, l'utilisateur commence la sélection par la cellule
"B9", l'adresse retournée pour la plage sera "B9". Et comme je n'ai
aucun contrôle sur le sens dans lequel la sélection a été effectuée, je
ne peux pas changer mon calcul en disant : "9" est la dernière ligne,
donc "9" + 1 - le nombre de lignes de ma sélection est la première ligne.

Bref, je suis dans une impasse.
J'ai bien essayé de réécrire mon code pour ne plus avoir à recourrir à
une telle donnée, mais je n'ai pas trouvé de solution "facile".

Si l'un d'entre vous avait une idée...

Bonne nuit,

Log




Avatar
michdenis
Bonjour lSteph,

Un exemple de Robert Dezan
----------------------------------------------------
Sub NouvelleFonction_Francs_Euros()
' Ajoute des fonctions au petit menu de la barre d'état.(en bas à droite)
With Application.CommandBars("AutoCalculate").Controls.Add
.Caption = "Difference"
.OnAction = "Difference"
End With
With Application.CommandBars("AutoCalculate").Controls.Add
.Caption = "Somme Francs => Euros"
.OnAction = "FrancsEuros"
End With
With Application.CommandBars("AutoCalculate").Controls.Add
.Caption = "Somme Euros => Francs"
.OnAction = "EurosFrancs"
End With
With Application.CommandBars("AutoCalculate").Controls.Add
.Caption = "Ecart Moyen"
.OnAction = "FonctionEcartMoyen"
End With
End Sub
'-----------------------------------
Sub Efface_Fonctions()
On Error Resume Next
Application.CommandBars("AutoCalculate").Controls("Difference").Delete
Application.CommandBars("AutoCalculate").Controls("Somme Francs =>
Euros").Delete
Application.CommandBars("AutoCalculate").Controls("Somme Euros =>
Francs").Delete
Application.CommandBars("AutoCalculate").Controls("Ecart Moyen").Delete
End Sub
'-----------------------------------
Private Sub Difference()
' Cette fonction calcule la différence entre le maxi et le mini de la
sélection:
On Error Resume Next
valeur = Application.Max(ActiveWindow.RangeSelection) -
Application.Min(ActiveWindow.RangeSelection)
MsgBox "Difference = " & valeur
Range("a1") = valeur
End Sub
Private Sub FrancsEuros()
On Error Resume Next
valeur = Application.WorksheetFunction.Sum(Selection) / 6.55957
MsgBox "Francs en Euros = " & valeur
End Sub
Private Sub EurosFrancs()
On Error Resume Next
valeur = Application.WorksheetFunction.Sum(Selection) * 6.55957
MsgBox "Francs en Euros = " & valeur
End Sub
Private Sub FonctionEcartMoyen()
On Error Resume Next
valeur = Application.WorksheetFunction.StDev(ActiveWindow.RangeSelection)
MsgBox "Ecart Moyen = " & valeur
End Sub
'-----------------------------------


Salutations!



"lSteph" a écrit dans le message de news:
Bonjour Fred,

J'ai cherché un truc , sans y parvenir
et je crois qu'Alain t'avait déjà posé cette question, alors au cas où le
sujet
ait abouti depuis...
Comment ajouter aux fonction de la Barre d'Etat exemple une fonction adresse
que l'on pourrait cocher en lieu et place de somme, nombre ou moyenne.
Merci d'avance .

Stéphane

"Ange Ounis" a écrit dans le message de news:

D'un point de vue pratique, lorsqu'on sélectionne une plage de cellules
et
qu'on cherche à récupèrer son adresse, on n'obtient que l'adresse de la
première cellule sélectionnée.


Ben, pas vraiment si tu utilises la propriété Address de la plage (voir
les réponses de mes petits camarades).
A partir de cette adresse, si tu travailles avec Excel 2000 ou plus
récent, tu peux récupérer facilement la première ligne et la dernière, à
l'aide de la fonction Split :

'''''''''''''''''
Sub essai()
Dim Plage As Range, Adr$, S$
Set Plage = Range("A1:B9")
Adr = Plage.Address
S = "Adresse : " & Adr & vbLf
S = S & "Première ligne : " & _
Left(Split(Adr, "$")(2), Len(Split(Adr, "$")(2)) - 1)
S = S & vbLf & "Dernière ligne : " & Split(Adr, "$")(4)
MsgBox S
End Sub
'''''''''''''''''

----------
Ange Ounis
----------

Bonjour,

Tout d'abord, nouvel utilisateur, je tiens à vous féliciter pour ce
forum, c'est une vréritable mine d'or...

Ensuite, je recontre un petit problème et j'aimerais avoir votre avis.

D'un point de vue pratique, lorsqu'on sélectionne une plage de cellules
et qu'on cherche à récupèrer son adresse, on n'obtient que l'adresse de
la première cellule sélectionnée.

Pour des raisons pratiques j'aimerais récupérer le numéro de la première
et de la
dernière ligne de la sélection. Le simple recours à l'utilisation de la
propriété count n'est, en soit, pas suffisant.

Je m'explique : Soit la plage de cellules à sélectionner = "A1:B9"

- Si l'utilisateur commence la sélection de la plage de cellules par la
cellule "A1", l'adresse retournée pour la plage est "A1". Il me
suffirait donc d'ajouter le nombre de lignes de ma sélection (nombre
obtenu par un count) - 1 à "1" pour récupérer "9". C'est logique.

- Si, maintenant, l'utilisateur commence la sélection par la cellule
"B9", l'adresse retournée pour la plage sera "B9". Et comme je n'ai
aucun contrôle sur le sens dans lequel la sélection a été effectuée, je
ne peux pas changer mon calcul en disant : "9" est la dernière ligne,
donc "9" + 1 - le nombre de lignes de ma sélection est la première ligne.

Bref, je suis dans une impasse.
J'ai bien essayé de réécrire mon code pour ne plus avoir à recourrir à
une telle donnée, mais je n'ai pas trouvé de solution "facile".

Si l'un d'entre vous avait une idée...

Bonne nuit,

Log




Avatar
lSteph
Merci à toi je vais donc essayer avec cette sélection!

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

Bonjour lSteph,

Un exemple de Robert Dezan
----------------------------------------------------
Sub NouvelleFonction_Francs_Euros()
' Ajoute des fonctions au petit menu de la barre d'état.(en bas à
droite)
With Application.CommandBars("AutoCalculate").Controls.Add
.Caption = "Difference"
.OnAction = "Difference"
End With
With Application.CommandBars("AutoCalculate").Controls.Add
.Caption = "Somme Francs => Euros"
.OnAction = "FrancsEuros"
End With
With Application.CommandBars("AutoCalculate").Controls.Add
.Caption = "Somme Euros => Francs"
.OnAction = "EurosFrancs"
End With
With Application.CommandBars("AutoCalculate").Controls.Add
.Caption = "Ecart Moyen"
.OnAction = "FonctionEcartMoyen"
End With
End Sub
'-----------------------------------
Sub Efface_Fonctions()
On Error Resume Next
Application.CommandBars("AutoCalculate").Controls("Difference").Delete
Application.CommandBars("AutoCalculate").Controls("Somme Francs =>
Euros").Delete
Application.CommandBars("AutoCalculate").Controls("Somme Euros =>
Francs").Delete
Application.CommandBars("AutoCalculate").Controls("Ecart Moyen").Delete
End Sub
'-----------------------------------
Private Sub Difference()
' Cette fonction calcule la différence entre le maxi et le mini de la
sélection:
On Error Resume Next
valeur = Application.Max(ActiveWindow.RangeSelection) -
Application.Min(ActiveWindow.RangeSelection)
MsgBox "Difference = " & valeur
Range("a1") = valeur
End Sub
Private Sub FrancsEuros()
On Error Resume Next
valeur = Application.WorksheetFunction.Sum(Selection) / 6.55957
MsgBox "Francs en Euros = " & valeur
End Sub
Private Sub EurosFrancs()
On Error Resume Next
valeur = Application.WorksheetFunction.Sum(Selection) * 6.55957
MsgBox "Francs en Euros = " & valeur
End Sub
Private Sub FonctionEcartMoyen()
On Error Resume Next
valeur = Application.WorksheetFunction.StDev(ActiveWindow.RangeSelection)
MsgBox "Ecart Moyen = " & valeur
End Sub
'-----------------------------------


Salutations!



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

Bonjour Fred,

J'ai cherché un truc , sans y parvenir
et je crois qu'Alain t'avait déjà posé cette question, alors au cas où le
sujet
ait abouti depuis...
Comment ajouter aux fonction de la Barre d'Etat exemple une fonction
adresse
que l'on pourrait cocher en lieu et place de somme, nombre ou moyenne.
Merci d'avance .

Stéphane

"Ange Ounis" a écrit dans le message de news:

D'un point de vue pratique, lorsqu'on sélectionne une plage de cellules
et
qu'on cherche à récupèrer son adresse, on n'obtient que l'adresse de la
première cellule sélectionnée.


Ben, pas vraiment si tu utilises la propriété Address de la plage (voir
les réponses de mes petits camarades).
A partir de cette adresse, si tu travailles avec Excel 2000 ou plus
récent, tu peux récupérer facilement la première ligne et la dernière, à
l'aide de la fonction Split :

'''''''''''''''''
Sub essai()
Dim Plage As Range, Adr$, S$
Set Plage = Range("A1:B9")
Adr = Plage.Address
S = "Adresse : " & Adr & vbLf
S = S & "Première ligne : " & _
Left(Split(Adr, "$")(2), Len(Split(Adr, "$")(2)) - 1)
S = S & vbLf & "Dernière ligne : " & Split(Adr, "$")(4)
MsgBox S
End Sub
'''''''''''''''''

----------
Ange Ounis
----------

Bonjour,

Tout d'abord, nouvel utilisateur, je tiens à vous féliciter pour ce
forum, c'est une vréritable mine d'or...

Ensuite, je recontre un petit problème et j'aimerais avoir votre avis.

D'un point de vue pratique, lorsqu'on sélectionne une plage de cellules
et qu'on cherche à récupèrer son adresse, on n'obtient que l'adresse de
la première cellule sélectionnée.

Pour des raisons pratiques j'aimerais récupérer le numéro de la première
et de la
dernière ligne de la sélection. Le simple recours à l'utilisation de la
propriété count n'est, en soit, pas suffisant.

Je m'explique : Soit la plage de cellules à sélectionner = "A1:B9"

- Si l'utilisateur commence la sélection de la plage de cellules par la
cellule "A1", l'adresse retournée pour la plage est "A1". Il me
suffirait donc d'ajouter le nombre de lignes de ma sélection (nombre
obtenu par un count) - 1 à "1" pour récupérer "9". C'est logique.

- Si, maintenant, l'utilisateur commence la sélection par la cellule
"B9", l'adresse retournée pour la plage sera "B9". Et comme je n'ai
aucun contrôle sur le sens dans lequel la sélection a été effectuée, je
ne peux pas changer mon calcul en disant : "9" est la dernière ligne,
donc "9" + 1 - le nombre de lignes de ma sélection est la première
ligne.

Bref, je suis dans une impasse.
J'ai bien essayé de réécrire mon code pour ne plus avoir à recourrir à
une telle donnée, mais je n'ai pas trouvé de solution "facile".

Si l'un d'entre vous avait une idée...

Bonne nuit,

Log









Avatar
lSteph
...
donc encore Merci à toi et à ("mon voisin de table") que j'en profite pour
saluer au passage mais ainsi ,
j'en reviens à peu près où j'en étais resté car on ne peut obtenir de
cocher
pour avoir le résultat dans la case de la barre d'état:

Sub NouvelleOption_Plage()
' Ajoute au petit menu de la barre d'état.(en bas à droite)
With Application.CommandBars("AutoCalculate").Controls.Add
.Caption = "Adresse"
.OnAction = "Adresse"
End With

End Sub
Sub Adresse()
MsgBox Selection.Address
End Sub

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

Bonjour lSteph,

Un exemple de Robert Dezan
----------------------------------------------------
Sub NouvelleFonction_Francs_Euros()
' Ajoute des fonctions au petit menu de la barre d'état.(en bas à
droite)
With Application.CommandBars("AutoCalculate").Controls.Add
.Caption = "Difference"
.OnAction = "Difference"
End With
With Application.CommandBars("AutoCalculate").Controls.Add
.Caption = "Somme Francs => Euros"
.OnAction = "FrancsEuros"
End With
With Application.CommandBars("AutoCalculate").Controls.Add
.Caption = "Somme Euros => Francs"
.OnAction = "EurosFrancs"
End With
With Application.CommandBars("AutoCalculate").Controls.Add
.Caption = "Ecart Moyen"
.OnAction = "FonctionEcartMoyen"
End With
End Sub
'-----------------------------------
Sub Efface_Fonctions()
On Error Resume Next
Application.CommandBars("AutoCalculate").Controls("Difference").Delete
Application.CommandBars("AutoCalculate").Controls("Somme Francs =>
Euros").Delete
Application.CommandBars("AutoCalculate").Controls("Somme Euros =>
Francs").Delete
Application.CommandBars("AutoCalculate").Controls("Ecart Moyen").Delete
End Sub
'-----------------------------------
Private Sub Difference()
' Cette fonction calcule la différence entre le maxi et le mini de la
sélection:
On Error Resume Next
valeur = Application.Max(ActiveWindow.RangeSelection) -
Application.Min(ActiveWindow.RangeSelection)
MsgBox "Difference = " & valeur
Range("a1") = valeur
End Sub
Private Sub FrancsEuros()
On Error Resume Next
valeur = Application.WorksheetFunction.Sum(Selection) / 6.55957
MsgBox "Francs en Euros = " & valeur
End Sub
Private Sub EurosFrancs()
On Error Resume Next
valeur = Application.WorksheetFunction.Sum(Selection) * 6.55957
MsgBox "Francs en Euros = " & valeur
End Sub
Private Sub FonctionEcartMoyen()
On Error Resume Next
valeur = Application.WorksheetFunction.StDev(ActiveWindow.RangeSelection)
MsgBox "Ecart Moyen = " & valeur
End Sub
'-----------------------------------


Salutations!



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

Bonjour Fred,

J'ai cherché un truc , sans y parvenir
et je crois qu'Alain t'avait déjà posé cette question, alors au cas où le
sujet
ait abouti depuis...
Comment ajouter aux fonction de la Barre d'Etat exemple une fonction
adresse
que l'on pourrait cocher en lieu et place de somme, nombre ou moyenne.
Merci d'avance .

Stéphane

"Ange Ounis" a écrit dans le message de news:

D'un point de vue pratique, lorsqu'on sélectionne une plage de cellules
et
qu'on cherche à récupèrer son adresse, on n'obtient que l'adresse de la
première cellule sélectionnée.


Ben, pas vraiment si tu utilises la propriété Address de la plage (voir
les réponses de mes petits camarades).
A partir de cette adresse, si tu travailles avec Excel 2000 ou plus
récent, tu peux récupérer facilement la première ligne et la dernière, à
l'aide de la fonction Split :

'''''''''''''''''
Sub essai()
Dim Plage As Range, Adr$, S$
Set Plage = Range("A1:B9")
Adr = Plage.Address
S = "Adresse : " & Adr & vbLf
S = S & "Première ligne : " & _
Left(Split(Adr, "$")(2), Len(Split(Adr, "$")(2)) - 1)
S = S & vbLf & "Dernière ligne : " & Split(Adr, "$")(4)
MsgBox S
End Sub
'''''''''''''''''

----------
Ange Ounis
----------

Bonjour,

Tout d'abord, nouvel utilisateur, je tiens à vous féliciter pour ce
forum, c'est une vréritable mine d'or...

Ensuite, je recontre un petit problème et j'aimerais avoir votre avis.

D'un point de vue pratique, lorsqu'on sélectionne une plage de cellules
et qu'on cherche à récupèrer son adresse, on n'obtient que l'adresse de
la première cellule sélectionnée.

Pour des raisons pratiques j'aimerais récupérer le numéro de la première
et de la
dernière ligne de la sélection. Le simple recours à l'utilisation de la
propriété count n'est, en soit, pas suffisant.

Je m'explique : Soit la plage de cellules à sélectionner = "A1:B9"

- Si l'utilisateur commence la sélection de la plage de cellules par la
cellule "A1", l'adresse retournée pour la plage est "A1". Il me
suffirait donc d'ajouter le nombre de lignes de ma sélection (nombre
obtenu par un count) - 1 à "1" pour récupérer "9". C'est logique.

- Si, maintenant, l'utilisateur commence la sélection par la cellule
"B9", l'adresse retournée pour la plage sera "B9". Et comme je n'ai
aucun contrôle sur le sens dans lequel la sélection a été effectuée, je
ne peux pas changer mon calcul en disant : "9" est la dernière ligne,
donc "9" + 1 - le nombre de lignes de ma sélection est la première
ligne.

Bref, je suis dans une impasse.
J'ai bien essayé de réécrire mon code pour ne plus avoir à recourrir à
une telle donnée, mais je n'ai pas trouvé de solution "facile".

Si l'un d'entre vous avait une idée...

Bonne nuit,

Log









Avatar
LogA3
Bonsoir michdenis,

Merci pour le code. Trop novice dans le domaine j'avoue que je n'aurais
jamais pensé à tourner la chose de la sorte... c'est exactement ce dont
j'avais besoin. Super!

Log

"michdenis" wrote:

Bonjour LogA3,

essaie ceci :

'------------------------------
Sub test()
Dim Rg As Range
Dim First As String, Last As String

If TypeName(Selection) = "Range" Then
Set Rg = Selection
First = Rg(1, 1).Address(0, 0)
Last = Rg(Rg.Rows.Count, Rg.Columns.Count).Address(0, 0)
MsgBox "Première cellule de la sélection : " & First & _
vbCrLf & "Dernière cellule de la sélection : " & Last
End If

End Sub
'------------------------------


Salutations!


"LogA3" a écrit dans le message de news:
Bonjour,

Tout d'abord, nouvel utilisateur, je tiens à vous féliciter pour ce forum,
c'est une vréritable mine d'or...

Ensuite, je recontre un petit problème et j'aimerais avoir votre avis.

D'un point de vue pratique, lorsqu'on sélectionne une plage de cellules et
qu'on cherche à récupèrer son adresse, on n'obtient que l'adresse de la
première cellule sélectionnée.

Pour des raisons pratiques j'aimerais récupérer le numéro de la première et
de la
dernière ligne de la sélection. Le simple recours à l'utilisation de la
propriété count n'est, en soit, pas suffisant.

Je m'explique : Soit la plage de cellules à sélectionner = "A1:B9"

- Si l'utilisateur commence la sélection de la plage de cellules par la
cellule "A1", l'adresse retournée pour la plage est "A1". Il me suffirait
donc d'ajouter le nombre de lignes de ma sélection (nombre obtenu par un
count) - 1 à "1" pour récupérer "9". C'est logique.

- Si, maintenant, l'utilisateur commence la sélection par la cellule "B9",
l'adresse retournée pour la plage sera "B9". Et comme je n'ai aucun contrôle
sur le sens dans lequel la sélection a été effectuée, je ne peux pas changer
mon calcul en disant : "9" est la dernière ligne, donc "9" + 1 - le nombre de
lignes de ma sélection est la première ligne.

Bref, je suis dans une impasse.
J'ai bien essayé de réécrire mon code pour ne plus avoir à recourrir à une
telle donnée, mais je n'ai pas trouvé de solution "facile".

Si l'un d'entre vous avait une idée...

Bonne nuit,

Log





Avatar
LogA3
Bonsoir lSteph,

Ce code là n'est pas perdu, je me le garde dans un coin...
Toutefois, je dois avouer être un peu perplexe... j'ai passé ma journée
d'hier (c'est une façon de parler, bien sûr ;-) ) à me battre avec cette
fameuse propriété Address. Et, franchement, il en va de l'humeur de ma
machine. De temps à autre elle me retounre l'adresse de la sélection, mais
elle passe plus clair de son temps à ne me retourner que celle de la première
cellule sélectionnée. D'où ma question sur le forum.

Log


"lSteph" wrote:

ReBonjour,
Sinon on peut à la limite mettre ceci qui affichera l'addresse dans la
barre d'état:
'
'''***dans le code de la feuille**
Private Sub Worksheet_Activate()
Application.StatusBar = Selection.Address
End Sub

Private Sub Worksheet_Deactivate()
Application.StatusBar = False
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.StatusBar = Selection.Address
End Sub
'''*****

'lSteph

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

Bonjour,

Tout d'abord, nouvel utilisateur, je tiens à vous féliciter pour ce forum,
c'est une vréritable mine d'or...

Ensuite, je recontre un petit problème et j'aimerais avoir votre avis.

D'un point de vue pratique, lorsqu'on sélectionne une plage de cellules et
qu'on cherche à récupèrer son adresse, on n'obtient que l'adresse de la
première cellule sélectionnée.

Pour des raisons pratiques j'aimerais récupérer le numéro de la première
et
de la
dernière ligne de la sélection. Le simple recours à l'utilisation de la
propriété count n'est, en soit, pas suffisant.

Je m'explique : Soit la plage de cellules à sélectionner = "A1:B9"

- Si l'utilisateur commence la sélection de la plage de cellules par la
cellule "A1", l'adresse retournée pour la plage est "A1". Il me suffirait
donc d'ajouter le nombre de lignes de ma sélection (nombre obtenu par un
count) - 1 à "1" pour récupérer "9". C'est logique.

- Si, maintenant, l'utilisateur commence la sélection par la cellule "B9",
l'adresse retournée pour la plage sera "B9". Et comme je n'ai aucun
contrôle
sur le sens dans lequel la sélection a été effectuée, je ne peux pas
changer
mon calcul en disant : "9" est la dernière ligne, donc "9" + 1 - le nombre
de
lignes de ma sélection est la première ligne.

Bref, je suis dans une impasse.
J'ai bien essayé de réécrire mon code pour ne plus avoir à recourrir à une
telle donnée, mais je n'ai pas trouvé de solution "facile".

Si l'un d'entre vous avait une idée...

Bonne nuit,

Log







1 2