Coordonnées cell active dans plage

[Résolu]
Signaler
Messages postés
11
Date d'inscription
samedi 29 janvier 2005
Statut
Membre
Dernière intervention
18 février 2005
-
Messages postés
936
Date d'inscription
lundi 19 janvier 2004
Statut
Membre
Dernière intervention
17 mars 2017
-
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

Messages postés
936
Date d'inscription
lundi 19 janvier 2004
Statut
Membre
Dernière intervention
17 mars 2017
4
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 82 internautes nous ont dit merci ce mois-ci

Messages postés
936
Date d'inscription
lundi 19 janvier 2004
Statut
Membre
Dernière intervention
17 mars 2017
4
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é
Messages postés
11
Date d'inscription
samedi 29 janvier 2005
Statut
Membre
Dernière intervention
18 février 2005

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...)
Messages postés
11
Date d'inscription
samedi 29 janvier 2005
Statut
Membre
Dernière intervention
18 février 2005

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)
Messages postés
936
Date d'inscription
lundi 19 janvier 2004
Statut
Membre
Dernière intervention
17 mars 2017
4
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é
Messages postés
11
Date d'inscription
samedi 29 janvier 2005
Statut
Membre
Dernière intervention
18 février 2005

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...
Messages postés
11
Date d'inscription
samedi 29 janvier 2005
Statut
Membre
Dernière intervention
18 février 2005

pb réglé! ... problème qui ne concernait pas le programme... que j'avais trouvé depuis plusieurs heures
Messages postés
936
Date d'inscription
lundi 19 janvier 2004
Statut
Membre
Dernière intervention
17 mars 2017
4
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é