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 passer d'un Cells à un Range ? [XL-2003]


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
    Avril 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 37
    Par défaut Comment passer d'un Cells à un Range ?
    Bonjour à tous

    Petite question relevant du B-A-BA du VBA sous Excel... Je peux passer outre, mais ça me simplifierait drôlement la vie d'y trouver une réponse : y a-t-il un moyen de passer directement d'un, par exemple, "Cells(1,1)" à la notation "A1" ?

    Pour l'instant, les numéros de colonne et de ligne étant des variables, et pas des nombres fixes, je suis obligée de faire un Select Case... (J'ai en effet besoin de savoir le nom de la cellule, pour la référencer dans une autre feuille (vous savez, "Feuil1!A1" ...)


    Existe-t-il plus simple... ?

  2. #2
    Membre éclairé
    Inscrit en
    Juin 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 41
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cells(ligne,colonne).value=range(colonne & ligne).value
    donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cells(1,1).value=range("A1").value

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Salut,

    Pourrait-on avoir un petit bout de code, surtout au niveau du Select Case ?

    Sinon, en faisant tu obtiens $A$1.

    Cependant, je pense que tu as beaucoup plus simple mais j'aimerais bien voir le code pour mieux comprendre ça :

    (J'ai en effet besoin de savoir le nom de la cellule, pour la référencer dans une autre feuille (vous savez, "Feuil1!A1" ...)
    Par exemple, pour parler de la cellule A1 de la feuille "Feuil1" tu n'as pas besoin de ça : un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Feuil1").Cells(1,1) ou Range("A1")
    suffit.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 85
    Par défaut
    tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    feuill.range(Replace(classeur.Worksheets("nomfeuille").Cells(i, j).Address, "$", ""))

    enfin je le vois comme ca je pense qu'on peut faire mieux

    si ca repond bien a ta question.

    si ca marche pas comme ca peut etre qu'il faut les guillemet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    feuill.range(Chr(34) & Replace(classeur.Worksheets("nomfeuille").Cells(i, j).Address, "$", "") & Chr(34))

  5. #5
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 37
    Par défaut
    Merci à tous pour vos réponses rapides

    Pour le Select Case, ça donnerait quelque chose comme :
    (Prenons un exemple : si je veux référencer la cellule (i, 1) de la feuille 1 dans la cellule (j, 1) la feuille 2...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
       Select Case i
          Case 1
             Cells(j, 1) = "=Feuil1!A1"
          Case 2
             Cells(j, 1) = "=Feuil1!B1"
     
          ...

    La réponse de PsychoSiffleur me parait en effet pas mal.
    J'aurai pensé qu'Excel avait une fonction toute faite pour ce genre de choses...

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Re,

    Tu as quelques incohérences dans ton algorithme, il me semble.

    Prenons Cells(X,Y). X est le numéro de la ligne et Y est le numéro de la colonne. Je pense donc que tu voudrais plutôt dire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Cells(j, 1) = "=Feuil1!A1" 
    et
    Cells(j, 1) = "=Feuil1!A2"
    En effet, il me semble plus logique d'attribuer à la cellule A2 de Feuil1 la cellule A2 de Feuil2 plutôt que la cellule B1. Après, ce n'est peut-être pas ce que tu veux mais ça semble plus logique à vue de nez.

    Enfin, tu n'as pas besoin de faire tout cela. Il suffit de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim j as integer
     
    j = 1
     
    For i = 1 to 10 'Si tu as 10 Case par exemple (je préfère la boucle plutôt que le Select Case mais tu peux rester avec)
        Worksheets("Feuil2").Cells(j, 1) = "=Feuil1!A" & i
        j = j +1
    Next

  7. #7
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 37
    Par défaut
    En effet, il me semble plus logique d'attribuer à la cellule A2 de Feuil1 la cellule A2 de Feuil2 plutôt que la cellule B1. Après, ce n'est peut-être pas ce que tu veux mais ça semble plus logique à vue de nez.

    Ce n'était qu'un exemple. Je retrouve ce problème un peu partout dans mon code, et mes exemples à moi sont bien trop compliqués pour cette simple question. Mais j'insistais volontairement sur le fait que ce soit la colonne qui change. En effet, si c'est la ligne, pas de problème, une boucle suffit, mais si c'est la colonne, je dois à chaque fois marquer à nouveau la formule (puisque le A se tranforme en B, etc). C'est assez prise de tête...

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

Discussions similaires

  1. Réponses: 17
    Dernier message: 24/11/2006, 18h25
  2. comment passer de access à MySQL
    Par isa_21 dans le forum Requêtes
    Réponses: 4
    Dernier message: 06/10/2004, 08h51
  3. [C#] Comment passer un paramètre Boolean au service Web ?
    Par ramalho dans le forum Services Web
    Réponses: 3
    Dernier message: 07/06/2004, 17h31
  4. [STRUTS] comment passer plusieur param GET aves <html:lin
    Par lfournial dans le forum Struts 1
    Réponses: 3
    Dernier message: 20/01/2004, 08h57
  5. Comment passer sous Delphi ?
    Par J-P-B dans le forum XMLRAD
    Réponses: 2
    Dernier message: 13/06/2003, 10h09

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