biscottte
Messages postés11Date d'inscriptionsamedi 29 janvier 2005StatutMembreDernière intervention18 février 2005
-
29 janv. 2005 à 14:25
valtrase
Messages postés937Date d'inscriptionlundi 19 janvier 2004StatutMembreDerniè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 !
valtrase
Messages postés937Date d'inscriptionlundi 19 janvier 2004StatutMembreDernière intervention 9 mai 20223 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
biscottte
Messages postés11Date d'inscriptionsamedi 29 janvier 2005StatutMembreDernière intervention18 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...)
biscottte
Messages postés11Date d'inscriptionsamedi 29 janvier 2005StatutMembreDernière intervention18 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)
Vous n’avez pas trouvé la réponse que vous recherchez ?
valtrase
Messages postés937Date d'inscriptionlundi 19 janvier 2004StatutMembreDernière intervention 9 mai 20223 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
biscottte
Messages postés11Date d'inscriptionsamedi 29 janvier 2005StatutMembreDernière intervention18 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...
valtrase
Messages postés937Date d'inscriptionlundi 19 janvier 2004StatutMembreDernière intervention 9 mai 20223 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