Afficher les coordonnées d'une cellule

Bonjour à tous,

Je suis bloquée sur un exercice (pour ceux qui connaissent : Application Financières sous Excel en VB, Fabrice RIVA) et je ne trouve pas la solution, j'espère donc que vous pourrez m'aider.

Je dois afficher dans les cellules d'une plage quelconque (moi je prends comme dans l''exemple B2:G7 pour tester) une chaine de caractères (x,y) où:

- x = ligne de la cellule dans la feuille

- y = colonne de la cellule dans la feuille

Je suis censée le faire à partir des fonctions/objets appris dans le livre aux chapitres précédents, mais là je SÈCHE TOTALEMENT... J'avais testée une boucle avec la fonction Rows.Count mais ce n'est pas bon (je n'ai plus le code car je l'ai effacé).

J'imagine qu'il faudra utiliser une fonction de conversion s'il précise que ce doit être une chaîne de caractères.

Si quelqu'un peut m'aiguiller, merci !

108803299 2530539507196683 542864855645599125 n

Bonjour,

Essai ca :

Sub PetitUn()

Dim MonRange As Range
Dim Cell
Dim LigneCell As Integer
Dim ColonneCell As Integer

Set MonRange = Range("B2:G7")

For Each Cell In MonRange
    LigneCell = Cell.Row
    ColonneCell = Cell.Column

    Cell.Value = "(" & LigneCell & "," & ColonneCell & ")"
Next

End Sub

Bonjour,

Je me suis également intéressé au problème et vous propose ma solution - ou plutôt mes solutions, puisqu'il y a deux problèmes.

Amicalement.

2essai.xlsm (25.44 Ko)

Ahhhhh ca marche merci beaucoup :D

As-tu une idée pour la question 2 également ?

Oui, regarde mon fichier

Le problème avec le tiens Yvouille c'est qu'on ne choisi pas de range.

Je cherche je te dis ca !

Re,

Essai Ca !

Sub PetitDeux()

Dim MonRange As Range
Dim Cell
Dim LigneCell As Integer
Dim ColonneCell As Integer

Set MonRange = Range("B2:G7")

For Each Cell In MonRange
    LigneCell = Cell.Row - (MonRange.Row - 1)
    ColonneCell = Cell.Column - (MonRange.Column - 1)

    Cell.Value = "(" & LigneCell & "," & ColonneCell & ")"
Next

End Sub

Bonjour Ourquiqui, le Forum

Voir les codes ci-dessous.

Sub Plage1()

For Each c In Range("B2:G7")

c.Value = c.Row & "," & c.Column

Next

End Sub

Sub Plage2()

For Each c In Range("B2:G7")

c.Value = c.Row - 1 & "," & c.Column - 1

Next

End Sub

Bons tests, bonne continuation.

Pareil X Cellus.

Ce programme n'est valable que pour ce range précis, ou si le range commence par B2

A nouveau,

@Moul,

Le test étant fait sur B2:G7.

Le code est adapté simplement à cette plage. Du moins c'est le début de plage qui fait référence.

On peut modifier Plage2 selon la référence initiale. Si par exemple c'est B3. Plage2 aura -2 en Row et non -1.

Juste à faire la différence.

C'est vrai mais avec le Range.Row et Range.Column on peut jouer directement avec le range sans réfléchir au reste

A nouveau,

Réfléchir c'est de la gym neuronale.

Maintenant tu peux toujours faire ceci aussi.

Sub Plage2()
For Each c In Range("B3:G7")
c.Value = c.Row - (Range("B3").Row - 1) & "," & c.Column - (Range("B3").Column - 1)
Next
End Sub

Merci beaucoup à tous pour vos réponses !

Dernière question : peut-on faire modifier la question 2 pour la faire sous forme d'inputbox ? De manière à pouvoir saisir n'importe quelle plage, j'avais réussi à le faire pour la Q1 mais j'arrive pas pour la 2ème

Sub PetitUn()

MonRange = InputBox("Entrez une plage")

Dim Cell

Dim LigneCell As Integer

Dim ColonneCell As Integer

Range(MonRange).Select

For Each Cell In Selection

LigneCell = Cell.Row

ColonneCell = Cell.Column Cell.Value = "(" & LigneCell & "," & ColonneCell & ")"

Next

End Sub

Sub PetitUn()

Dim MonRange As Range
Dim Cell
Dim LigneCell As Integer
Dim ColonneCell As Integer

L = InputBox("Définir un range.")

Set MonRange = Range(L)

For Each Cell In MonRange
    LigneCell = Cell.Row
    ColonneCell = Cell.Column

    Cell.Value = "(" & LigneCell & "," & ColonneCell & ")"
Next

End Sub

Sub PetitDeux()

Dim MonRange As Range
Dim Cell
Dim LigneCell As Integer
Dim ColonneCell As Integer

L = InputBox("Définir un range.")

Set MonRange = Range(L)

For Each Cell In MonRange
    LigneCell = Cell.Row - (MonRange.Row - 1)
    ColonneCell = Cell.Column - (MonRange.Column - 1)

    Cell.Value = "(" & LigneCell & "," & ColonneCell & ")"
Next

End Sub

Données rentré B2:G7 sans guillemets.

A nouveau,

Sub Plage2()
Dim Plage,Plg, Deb As String
Plage = InputBox("Votre plage", "Insertion")
Plg = Range(Plage).Address(Row, Column)
Deb = Left(Plg, InStr(1, Plg, ":") - 1)
For Each c In Range(Plg)
c.Value = c.Row - (Range(Deb).Row - 1) & "," & c.Column - (Range(Deb).Column - 1)
Next
End Sub

Bonne continuation.

X Cellus, Pourquoi tu t'embête à trouver la cellule ?

Le range.row sur tout le range donnera toujours la première ligne du range. Idem pour la colonne.

Parce que si le range est écrit a l'envers comme range("G7:B2")

Le programme est erronée non ?

A nouveau,

@Moul,

Parce que si le range est écrit a l'envers comme range("G7:B2")

Le programme est erronée non ?

Avant d'écrire des inepties, il faut vérifier. La proposition d'un code vient d'abord des tests effectués.

Donc apporte la preuve contraire. Ou arrête de poster des Fakes News.

C'est une question donc calme toi !

Et oui dans tout les cas ça ne sert à rien d'extraire cette valeur pour récupérer le range.row ou range.column.

Donc même si c'est petite tu utilise des lignes et donc de la mémoire pour rien.

Suite,

Donc même si c'est petite tu utilise des lignes et donc de la mémoire pour rien

Compte d'abord tes lignes avant de répondre.

Au lieu de revenir sur les propositions des autres. Tu as vraiment des posts inutiles.

Bien toi, tu pars dans un charabia avec des noms de variables bizarres pour apprendre à des gens le code

Et tu les embrouilles avec des fonctions inutiles.

On continue ?

Rechercher des sujets similaires à "afficher coordonnees"