IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Comment récupérer les numéros de ligne/colonne d'une plage


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Femme Profil pro
    Controlling & BI
    Inscrit en
    Mai 2013
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Controlling & BI
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2013
    Messages : 54
    Points : 42
    Points
    42
    Par défaut Comment récupérer les numéros de ligne/colonne d'une plage
    J'aimerais récupérer les numéros de ligne et colonne de cette plage "R16C3:R35C18" (donc dans ce cas 16, 3, 35 et 18) sans m'embarquer dans des left/right/mid/instr etc.
    Ce qui est important c'est que le code doit fonctionner pour toutes sortes de plages sélectionnées, même si les numéros sont à trois, quatre, ... chiffres.

    Est-ce qure quelqu'un aurait une idée?
    Merci d'avance.

  2. #2
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Sans comprendre la démarche, brut de brut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MsgBox Split(Split(Split("R16C3:R35C18", ":")(0), "C")(0), "R")(1) & " " & Split(Split("R16C3:R35C18", ":")(0), "C")(1) _
      & " " & Split(Split(Split("R16C3:R35C18", ":")(1), "C")(0), "R")(1) & " " & Split(Split("R16C3:R35C18", ":")(1), "C")(1)
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Invité
    Invité(e)
    Par défaut
    bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("A1").Row=1
    Range("A1").Column
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub test()
    Dim MyPlage As Range
    Dim L As Long
    Dim C As Long
    Set MyPlage = Range("A1:V32")
    For L = 1 To MyPlage.Rows.Count
        For C = 1 To MyPlage.Columns.Count
        Debug.Print "R : " & MyPlage(L, C).Row & " C : "; MyPlage(L, C).Column
        Next
     
    Next
    End Sub

  4. #4
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    Joli! La belle prise de tête de split!

  5. #5
    Membre du Club
    Femme Profil pro
    Controlling & BI
    Inscrit en
    Mai 2013
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Controlling & BI
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2013
    Messages : 54
    Points : 42
    Points
    42
    Par défaut
    Merci mais ça reste bien compliqué...
    En fait, ce que je suis en train de faire me semble bien simple, il doit exister un truc simple.
    1) Un utilisateur sélectionne une plage avec sa souris, l'adresse s'affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set LaPlage = Application.InputBox("Selectionnez la plage de cellules à vider avec la souris.", "Saisie", Type:=8)
     
    Label75.Caption = LaPlage.Address
    2) Je transforme l'adresse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LaPlage2 = LaPlage.Address(ReferenceStyle:=xlR1C1)
    3) Maintenant je voudrais utiliser les coordonnées de ligne et colonne dans un tableau du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim Tableau(1 To x, 1 To y) as Variant
    avec x et y comme variables des lignes et colonnes de la plage sélectionnée au début par l'utilisateur.
    Aussi, je voudrais pouvoir utiliser ces numéros de lignes et colonnes dans un ForToNext

  6. #6
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    de EngueEngue :
    Joli! La belle prise de tête de split!
    Merci mais je dois être un peu fou
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  7. #7
    Membre du Club
    Femme Profil pro
    Controlling & BI
    Inscrit en
    Mai 2013
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Controlling & BI
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2013
    Messages : 54
    Points : 42
    Points
    42
    Par défaut
    Merci c'est ça et c'est tout simple...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Set LaPlage = Application.InputBox("Selectionnez la plage de cellules à vider avec la souris.", "Saisie", Type:=8)
     
    Label75.Caption = LaPlage.Address
    x = LaPlage.Rows.Count
    y = LaPlage.Columns.Count

  8. #8
    Invité
    Invité(e)
    Par défaut
    Regard ça
    Fichiers attachés Fichiers attachés

  9. #9
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Merci c'est ça et c'est tout simple...
    Content pour toi, mais fallait-il comprendre ton but

    Bonne fin de journée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  10. #10
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Bonjour le Forum,

    Sans regarder le code de l'ami casefeyere (salut à toi!), j'avis créé cette fonction que tu peux utiliser en faisant varier son 2ème argument de 1 à 4.

    A adapter, bien sûr

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    Public Sub ESSAI()
    MsgBox Découpe("R16C3:R35C18", 1)
    MsgBox Découpe("R16C3:R35C18", 2)
    MsgBox Découpe("R16C3:R35C18", 3)
    MsgBox Découpe("R16C3:R35C18", 4)
    End Sub
     
    Public Function Découpe(ch As String, valeur As Byte)
     
    Dim tb1, rg1, rg2, tb11, tb12
    Dim v1 As Integer
    Dim v2 As Integer
    Dim v3 As Integer
    Dim v4 As Integer
     
    tb1 = Split(ch, ":")
    rg1 = tb1(LBound(tb1))
    rg2 = tb1(UBound(tb1))
    tb11 = Split(Replace(rg1, "R", ""), "C")
    v1 = tb11(LBound(tb11))
    v2 = tb11(UBound(tb11))
    tb12 = Split(Replace(rg2, "R", ""), "C")
    v3 = tb12(LBound(tb12))
    v4 = tb12(UBound(tb12))
     
    Select Case valeur
            Case 1
                    Découpe = v1
            Case 2
                    Découpe = v2
            Case 3
                    Découpe = v3
            Case 4
                    Découpe = v4
    End Select
     
    End Function

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  11. #11
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    Est ce que cela te va cheftaine ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Set LaPlage = Application.InputBox("Selectionnez la plage de cellules à vider avec la souris.", "Saisie", Type:=8)
     
    Label75.Caption = LaPlage.Address
     
     
    premcol=Laplage.column
    premlig=Laplage.row
     
    derncol=laplage.columns.count-premcol
    dernlig=laplage.rows.count-premlig
     
    For i = premcol to derncol
    For j = premlig to dernlig
    Oula j'avais pas vu tous ces posts.. navré

    Citation Envoyé par casefayere Voir le message
    de EngueEngue :

    Merci mais je dois être un peu fou
    C'est de l'art mon ami! Rendre quelque chose de simple terriblement compliqué! Sans ça la vie serait tellement simple ! J'y arrive des fois aussi!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer les numéros de ligne et de colonne
    Par cheeser dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/07/2008, 16h28
  2. Réponses: 0
    Dernier message: 25/02/2008, 12h06
  3. Comment afficher les numéros de lignes ?
    Par dr23fr dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 05/07/2006, 10h35
  4. Réponses: 2
    Dernier message: 13/06/2006, 15h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo