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 :

Macro sur Excel/Boucle sur les lettres


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2005
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 31
    Points : 13
    Points
    13
    Par défaut Macro sur Excel/Boucle sur les lettres
    Bonsoir
    J'ai fait une boucle simple sur les cellules mais en se déplaçant sur les numeros et ça a très bien marché :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Dim i
    i = 1
    While i <> 8
    ActiveSheet.Range("F" & CStr(i)).Value = InputBox("le numero est jusqu'à 7", "ENTRER LA VALEUR DE N" & i)
    i = i + 1
    Wend
    Je veux faire une simple boucle sur les cellules mais en se déplaçant sur les lettres
    C'est à dire en se déplaçant FàL !(F ,G,H,I,J,K,L).
    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim i
    dim a
    i = F
    While i<> M
    ActiveSheet.Range(F"5"Value = InputBox("le lettre est jusqu'à L", "ENTRER LA VALEUR DE N" &a)
    i = i + 1
    a = a+1
    Wend
    Ce code est totalement FAUX sur les syntaxes.Mais vous avez au moin compris ce que je voulais dire.

    Alors quel est le bon code :
    Merci.

  2. #2
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Le plus simple, c'est de remplacer tes "Range" par des Cells, qui marchent en coordonnées.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Cells (2,4) = Range("D2")
    Attention, c'est Cells(ligne,colonne)

  3. #3
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Et tu peux aussi penser à la technique qui permet de passer d'une cellule à une autre avec Offset(ligne, colonne):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Dim MaCellule As Range
    Set MaCellule = Cells(2,6)    'qui est égal à Range("F2")
    While MaCellule.Column <=12
       'je fais ce que je veux sur ma cellule
       Set MaCellule = MaCellule.Offset(0,1)  'je me déplace de 1 vers la droite
    Wend

  4. #4
    Membre à l'essai
    Inscrit en
    Septembre 2005
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 31
    Points : 13
    Points
    13
    Par défaut Suite de ma question
    Bonsoir Megaxel
    J'ai fais un petit code très simple à Base de tes exemples :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dim MaCellule As Range 
    Dim i As Integer
    Dim a As Integer
    i=3
    a=2
    Set MaCellule = Cells(2,i)    'qui est égal à Range("C2") 
    While MaCellule.Column <=5
    MaCellule = a
    i=i+1
    a=a+2
    Wend
    Résultat : La Machine s'est plantée
    Je voulas faire ,automatiquement sur excel il y a affichage des resultats
    des incrémentations par 2 c'est à dire :

    C2=2 D2=4 E2=6

    Quel est Bon Code
    Merci.

  5. #5
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    ta condition de test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    While MaCellule.Column <=5
    est as revoir ... Puisque maCellule ... n'est pas modifié dans la boucle ( et le 5 non plus..) donc tu est devant une boucle infinie...

    tu peu re-écrire :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim MaCellule As Range
    Dim i As Integer
    Dim a As Integer
    i=3
    a=2
     
    While i  <=5
       Set MaCellule = Cells(2,i)    'qui est égal à Range("C2")
       MaCellule = a
       i=i+1
       a=a+2
    Wend

  6. #6
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Mais si tu as un peu mélangé mes deux propositions...
    Essaie comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim MaCellule As Range
    Dim MonContenu As Integer
    Set MaCellule = Cells(2,6)    'qui est égal à Range("F2") 
    MonContenu = 2
    While MaCellule.Column <=12 
       MaCellule.Value = MonContenu
       Set MaCellule = MaCellule.Offset(0,2)  'je me déplace de 2 vers la droite
       MonContenu = MonContenu + 1
    Wend
    A chaque tour de boucle (tant que tu n'as pas atteint la colonne 12), le OffSet te déplace de 2 cellule vers la droite, et de 0 cellule vers le bas, et le contenu que tu affectes aux cellules augmente de 1.
    J'ai inversé les variations de 2 et de 1 pour que tu vois la différence avec le code de bbil, qui illustre l'autre méthode.

  7. #7
    Membre à l'essai
    Inscrit en
    Septembre 2005
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 31
    Points : 13
    Points
    13
    Par défaut Remerciment et remaques
    Bonjour bbil et Megaxel
    Merci pour vos réponses claires et précises .............

    J'ai testé les code de bbil :
    ça a marché très bien ; Je trouve ce code très simple et très éfficace.C'est un très beau code.
    Merci bbil

    J'ai testé les code de Megaxel :
    ça a marché très bien aussi ; J'ai beaucoup aimer le côté très riche et très instructifs .... en utilisant des termes comme MaCellule.Column ,MaCellule.Value ,MaCellule.Offset(0,2),.....
    Ces termes me permet de comprendre de plus en plus le VBA/Macro parce que Moi je suis plûtôt de formation C/C++.
    En voyant ces termes on immagine bien des objets et des méthodes(fonctions membres).
    Merci Megaxel...

  8. #8
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Est-ce que, de là où vous êtes, vous pouvez m'entendre ronronner de plaisir?
    Allez, un petit click sur le bouton "Résolu", en bas à gauche, et tout le monde sera ravi.

  9. #9
    Membre à l'essai
    Inscrit en
    Septembre 2005
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 31
    Points : 13
    Points
    13
    Par défaut Réponse
    Ah Oui!! Mais Bien sûre !
    Merci...

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

Discussions similaires

  1. [XL-2007] Problème macro excel 2007 sur une boucle
    Par neo222816 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/08/2014, 12h34
  2. macro moteur de recherche sur excel
    Par VEROLYDE dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/08/2010, 15h36
  3. [VBA] utilisation d'une macro excel 2003 sur excel 2004 for mac
    Par fofika dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/11/2007, 15h30
  4. Réponses: 3
    Dernier message: 16/02/2007, 12h35
  5. Faire fonctionner des objets d'Excel 2007 sur Excel 2003 ?
    Par brunoperel dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 08/12/2006, 20h52

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