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 :

Transformer la lettre A en 1 ,B en 2 ,C en 3..


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 108
    Par défaut Transformer la lettre A en 1 ,B en 2 ,C en 3..
    Bonjour,

    J'aimerai effectivement ,sans passer par 26 conditions (
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if ActiveCell.column="A" Then
    colonne= 1
    ElseIf ActiveCell.column="B" Then
    colonne=2
    ....
     
    End if
    N'y aurait-il pas un moyen plus simple pour mon probleme?

    Merci!

  2. #2
    Membre éprouvé
    Inscrit en
    Janvier 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Janvier 2007
    Messages : 132
    Par défaut
    Bonjour
    La commande ActiveCell.Column te renvoie une valeur numérique
    Donc pas de problème normalement
    Sinon, la commande Asc te permet de convertir, avec Asc("A")=65, Asc("B")=66, ...
    Slts

  3. #3
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Et pour aller au delà
    Les limites : A à FXSHRXW | 1 à 2147483647
    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
     
    Public Function Lettre2NumCol(ByVal Chaine As String) As Long 
    Dim i As Long, ValeurCh As Long, v As Long 
    Const ChaineAlpha As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
        For i = 1 To Len(Chaine) 
            ValeurCh = InStr(1, ChaineAlpha, Mid(UCase(Chaine), i, 1)) 
            v = v * 26 + ValeurCh 
        Next 
        Lettre2NumCol = v 
    End Function 
     
    Public Function NumCol2Lettre(ByVal NumCol As Long) As String 
    Dim i As Long, x As Long, s As String 
        For i = 6 To 0 Step -1 
            x = (26 ^ (i + 1) - 1) / 25 - 1 
            If NumCol > x Then 
                s = s & Chr(((NumCol - x - 1) \ 26 ^ i) Mod 26 + 65) 
            End If 
        Next i 
        NumCol2Lettre = s 
    End Function

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 95
    Par défaut
    Je suis d'accord avec Plateforme3,
    Tu devrais tout bêtement faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    colonne=activecell.columns

  5. #5
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    En effet la solution de Plateforme3 est adapté à ton besoin

    Je reviens juste sur l'utilisation des If imbriqués. utilises plutot le select Case
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Select case ActiveCell.column
          case "A"
             colonne= 1
          case "B"
             colonne=2
     
    ...
     
    End select
    L'exemple n'est pas terrible vu que ActiveCell.column renvoi deja le numero de colonne

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Lettre = "Z"
    MsgBox Range(Lettre & 1).Column
    Ai pas + simple

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

Discussions similaires

  1. Transformer une lettre minuscule en majuscule
    Par Invité dans le forum Pascal
    Réponses: 16
    Dernier message: 13/01/2008, 10h11
  2. Réponses: 4
    Dernier message: 04/05/2007, 23h49
  3. transformer des lettres en chifres
    Par hassanibi dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 06/09/2005, 09h54
  4. Réponses: 7
    Dernier message: 07/12/2004, 11h18
  5. Réponses: 4
    Dernier message: 21/07/2004, 11h51

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