Coordonnées cell active dans plage

Résolu
biscottte Messages postés 11 Date d'inscription samedi 29 janvier 2005 Statut Membre Dernière intervention 18 février 2005 - 29 janv. 2005 à 14:25
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 - 29 janv. 2005 à 19:54
Bonjour,
je cherche à déterminer les coordonnées d'une cellule dans une plage type UsedRange. (coordonnées type "8"ème cellule de la plage plutôt que l'adresse "B6" par ex).
avec : ActiveSheet.UsedRange.Count
j'obtiens le nombre de cell de la plage, mais ensuite je bloque. J'ai tenté "ActiveCell", mais tout ce que je peux déterminer c'est le nb de cell actives dans la plages, pas les coordonnées

Merci d'avance si vous me donnez un petit coup de main !

8 réponses

valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 4
29 janv. 2005 à 18:01
Re,
Si ce n'est que ça voilà le code

Sub position()
Dim compte As Integer
compte = 1
For Each cell In ActiveSheet.UsedRange
If cell <> ActiveCell Then
compte = compte + 1
Else
'cell = ActiveCell
Exit For
End If
Next
MsgBox compte & " ème cellule"
End Sub

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
3
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 4
29 janv. 2005 à 14:49
Salut,
Pas trop compris ta question mais ceci fera peut-être l'affaire

Dim MyAdress
MyAdress = Range("UsedRange").Cells(3, 4).Address

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
biscottte Messages postés 11 Date d'inscription samedi 29 janvier 2005 Statut Membre Dernière intervention 18 février 2005
29 janv. 2005 à 14:58
Merci de l'aide! Je n'avais pas pensé au tableau dynamique pour un truc aussi simple... Je pensais qu'une seule ligne de code suffisait. La réponse n'est pas ce qui répond exactement à mon pb mais au moins j'ai une piste.

--> le problème étant: dans une plage de dimensions inconnues, comment afficher la position de la cellule active dans celle-ci? (sans utiliser address qui retournerait des rows et columns, mais en comptant le nombre de cellules non actives jusqu'à la cellule active). Je pense que je vais continuer avec MsbBox.ActiveSheet.UsedRange.Count mais il va falloir que je fasse le distingo cells non actives et cells actives.

Biscottte (qui se débrouille bien en déclinaisons latines mais qui a plus de mal en VBA...)
0
biscottte Messages postés 11 Date d'inscription samedi 29 janvier 2005 Statut Membre Dernière intervention 18 février 2005
29 janv. 2005 à 17:32
Pour la question, voici où j'en suis rendue:

Sub position()
Dim compte As Integer
compte = 0
For Each cell In ActiveSheet.UsedRange
If cell <> ActiveCell Then
compte = compte + 1
Else: cell = ActiveCell
End If
Next
MsgBox compte & "ème cellule"
End Sub

... simplement, je ne sais pas dire au programme d'arrêter de compter dès qu'il a trouvé la cellule active (un "exit for" donne = 0 cellule... le programme arrête tout simplement de tourner)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 4
29 janv. 2005 à 17:47
Re,
Si ce n'est que ça voilà le code bonne prog

Sub position()
Dim compte As Integer
compte = 1
For Each cell In ActiveSheet.UsedRange
If cell <> ActiveCell Then
compte = compte + 1
Else
'~~ cell = ActiveCell
Exit For
End If
Next
MsgBox compte & "ème cellule"
End Sub

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
biscottte Messages postés 11 Date d'inscription samedi 29 janvier 2005 Statut Membre Dernière intervention 18 février 2005
29 janv. 2005 à 18:27
merci jean-paul de toutes tes réponses!
pour le compte oui j'avais vu ... mais sinon çà ne fonctionne pas: l'exit for ne joue pas son rôle et le prog s'arrête à la première boucle. J'ai essayé avec loop until, et là c'est le contraire la boucle va jusqu'au bout!
Sub position4()
Dim compte As Integer
compte = 1
For Each cell In ActiveSheet.UsedRange
Do
compte = compte + 1
Loop Until cell = ActiveCell
Next
MsgBox compte & "ème cellule"
End Sub

... bon, pas grave, j'ai quand même avancé par rapport à ce midi...
0
biscottte Messages postés 11 Date d'inscription samedi 29 janvier 2005 Statut Membre Dernière intervention 18 février 2005
29 janv. 2005 à 18:32
pb réglé! ... problème qui ne concernait pas le programme... que j'avais trouvé depuis plusieurs heures
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 4
29 janv. 2005 à 19:54
Re,
Oui en effet
If cell <> ActiveCell Then
Compare la valeur de la cellule en cours et de la cellule active si deux cellule ont la même valeur tu sort de la boucle et ce n'est pas le but recherché, donc il faut présiser que l'on compare l'adresse de la cellule.
Dans ton code tu fais beaucoup d'itération pour rien c'est redondant donc en fait faut écrire ceci et là ça devrait fonctionner.

Sub position()
Dim compte As Integer

compte = 1
For Each cell In ActiveSheet.UsedRange
If cell.Address <> ActiveCell.Address Then
compte = compte + 1
Else
'cell = ActiveCell

Exit For
End If
Next
MsgBox compte & " ème cellule"
End Sub

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0