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

VB.NET Discussion :

Excel / CALC : retourner la position X/Y d'une cellule a partir de son nom ex : 'ZZ1' donne col:702, Ligne:1


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2015
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2015
    Messages : 1
    Par défaut Excel / CALC : retourner la position X/Y d'une cellule a partir de son nom ex : 'ZZ1' donne col:702, Ligne:1
    Bonjour,

    Voici ma première vrai pierre à l'édifice de l'entre-aide :-)

    N'ayant rien trouver de clair sur une solution au problème de retrouver la position x / Y (Colonne / Ligne)
    d'une cellule en prenant pour base sont nom (ex : A345, ZR45, AFE400)

    Voici une solution qui fonctionne en VB.Net :

    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
    Friend Sub CellPosition(ByVal CELL As String, ByRef Col As Integer, ByRef Row As Integer)
     
        'Transforme une position de cellule (ex : AC34) en coordonnées Colonne / Ligne (ex : 29 / 34) 
        Col = 0
     
        For i = 0 To CELL.Length - 1
          If CELL.Chars(i).IsLetter(CELL, i) Then
            If i = 0 Then Col = (Asc(CELL.Chars(i)) - 64) 'Gére les cellules A à Z
            If i = 1 Then Col = (26 * Col) + (Asc(CELL.Chars(i)) - 64) 'Gére les cellules AA à ZZ
            If i = 2 Then Col = (26 * Col) + (Asc(CELL.Chars(i)) - 64) 'Gére les cellules après AAA
          Else
            Row = CELL.Substring(i, CELL.Length - i) 'Gére les numéro de ligne
            Exit For
          End If
        Next
     
        'Enleve 1 pour pouvoir utiliser le resultat dans la fonction "feuille.getCellbyPosition(Col, Row).setString("Texte de cellule")" 
        'qui utilise une base (0,0) pour (A1) dans CALC.
     
        Col -= 1 : Row -= 1
     
      End Sub
    Appel pour utiliser comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    '....
     
    Dim ColPos As Integer
    Dim RowPos As Integer
    CellPosition("AC34", ColPos, RowPos)
     
    FeuilleCALC.getCellbyPosition(ColPos, RowPos).setString("Texte saisie")
     
    '....
    en espérant rendre service à ceux qui galère en cherchant ça !!!!!

    Amicalement ;-p

  2. #2
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Pourquoi faire compliqué :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Sub CellPosition(ByVal CELL As String, ByRef Col As Integer, ByRef Row As Integer)
        Col = Range(CELL).Column
        Row = Range(CELL).Row
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim ColPos As Integer
    Dim RowPos As Integer
    CellPosition("AC34", ColPos, RowPos)
     
    FeuilleCALC.getCellbyPosition(ColPos, RowPos).setString("Texte saisie")
    A+

Discussions similaires

  1. Réponses: 4
    Dernier message: 27/11/2008, 15h59
  2. retourner la lettre qui correspond a une cellule
    Par deubelte dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/11/2007, 16h53
  3. Réponses: 9
    Dernier message: 26/09/2007, 17h18
  4. [VBA-EXCEL] format de date lors d'écriture dans une cellule
    Par ustilago dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/02/2007, 18h44
  5. [Excel] Filtre de colonne avec la valeur d'une cellule
    Par repié dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/04/2006, 15h58

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