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 :

fonction "index alphabétique"


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 55
    Par défaut fonction "index alphabétique"
    Bonjour,

    Quelle est la fonction qui renvoie la lettre de la n-ieme colonne d'un feuille ?

    C'est que j'ai des tableaux à remplir par une macro, et que plutôt que de boucler sur toutes les lignes et toutes les colonnes, j'aimerais écrire la formule une fois, à l'aide .formula, puis l'étendre.
    j'ai pensé écrire quelque chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.OffSet(j, k).Formula = ("=Traitement!"& XX& ""& 24+j & "*produit" & p & " !" & XX & "" & 6+j)
    où XX serait remplacé par la fonction en question me permettant d'écrire la bonne lettre

    Je vous donne quand même le code actuel (qui d'ailleurs ne marche pas, pour cause d'incompatibilité de type) pour vous donner une idée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    For i = 0 To 2
                    For j = 0 To 5
                        For k = 0 To 5
                    CellCoura.OffSet(4, 1 + i * 9).Activate
                    Val = Worksheets("Traitement").Cells(24+j, 12+k).Value * Worksheets("Produit" & p).Cells(6+j, 3).Value
                    ActiveCell.OffSet(j, k).Value = Val
                    ActiveCell.AutoFill Destination:=Range(ActiveCell, ActiveCell.OffSet(0, 5)), Type:=xlFillDefault
                    Range(ActiveCell, ActiveCell.OffSet(0, 5)).AutoFill Destination:=Range(ActiveCell, ActiveCell.OffSet(5, 5)), Type:=xlFillDefaul
     
                        Next
                    Next
                Next
    Remarquez que si jamais quelqu'un trouve l'erreur en passant, çà m'intéresse toujours !

  2. #2
    Membre Expert Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Par défaut
    bonjour amiral

    je ne suis pas certain d'avoir tout compris mais si tu veux etendre une formule, il te faut une formule

    exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("C1").formulalocal = "=Traitement!A1*Produits!B1"
    Range("C1:C100").filldown
    Avec cela tu place une formule dans la cellule resultat, et tu la dupliques sur 100 lignes

    salutations

  3. #3
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 55
    Par défaut
    Tout à fait !

    La question que je me pose, c'est de savoir comment remplacer le A de "A1" par un truc du genre index(1), ce qui me permettrait de sélectionner la colonne dont le numéro (ou plutôt la lettre) résulte d'un calcul

  4. #4
    Membre Expert Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Par défaut
    re:


    par une simple formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    lettre = chr(64 + (numcol mod 27))
    if numcol>26 then lettre = chr(64 + int(numcol /26))
    essaye ceci, j'ai pas testé mais ca devrai etre Ok

    Bonne journée

  5. #5
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 55
    Par défaut
    Je me permets de relancer un peu cette discussion, parce que je suis toujours bloqué.

    D'une part parce que ce que me propose Wilfried ne permet pas, à priori de prendre en compte les colonnes à deux lettres (AA par exemple).
    Et d'autre part parce que, à défaut de fonction excel dédiée, j'aimerais créer ma propre fonction qui retourne la chaine de caractères voulue.

    Donc si quelqu'un connait une fonction qui fait çà toute seule je suis preneur.
    Sinon : comment crée-t-on une fonction d'un paramètre du genre : lettre (28) renvoie AB

  6. #6
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    L'objet Cells t'aidera surement.

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

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