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 :

Boucle for pour changer de colonne


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Boucle for pour changer de colonne
    Bonjour à tous,

    J'ai un petit soucis. Je suis super débutant en vba ^^. Je souhaiterais que ce programme ce répète de colonne en colonne (par exemple sur 12 colonnes).
    J'ai essayé de rajouté une boucle For mais sans succès. Je désespère un peu.
    Pouvez-vous m'aider s'il vous plait ?

    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
    Sub Dessine_Rectangle()
    For i = 1 To 10
        If Cells(21, "C") = i Then
            j = 18 - i + 1
            ref = "C" & j
            Exit For
        End If
    Next
     
    Cells(1, 1).Value = ref  
    Largeur = 8
    Hauteur = 8 
    Gauche = Range(ref).Left + (Range(ref).Width - Largeur) / 2
    Haut = Range(ref).Top + (Range(ref).Height - Hauteur) / 2
    ActiveSheet.Shapes.AddShape(msoShapeRectangle, Gauche, Haut, Largeur, Hauteur).Select
    End Sub
    Fichiers attachés Fichiers attachés

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 763
    Points : 576
    Points
    576
    Par défaut
    Bonjour,

    Premièrement, il te faut enlever le exit for.
    Et tu peux remplacer la lettre "C" par un chiffre qui sera le rang de la colonne.
    Ensuite tu pourras utiliser un For pour changer de colonne

  3. #3
    Membre chevronné Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Points : 2 131
    Points
    2 131
    Par défaut
    Il faut créer une sous-procédure (enfin c'est le plus propre) qui prend en paramètre le numéro de la colonne.

    Par contre ta boucle actuelle ne sert à rien.

    Voici un exemple qui marche :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    Option Explicit
     
    Public Const LARGEUR = 8
    Public Const HAUTEUR = 8
     
    Sub Dessine_Rectangle()
        Dim iCol As Integer
        For iCol = 3 To 14
            Dessine_Rectangle_sub iCol
        Next iCol
    End Sub
     
    Sub Dessine_Rectangle_sub(numCol As Integer)
        Dim numLig As Integer
        Dim rg As Range
        Dim score As Integer
        Dim gauche As Single
        Dim haut As Single
     
        score = Cells(21, numCol).Value
     
        If score < 0 Or score > 10 Then Exit Sub
     
        numLig = 18 - score + 1
     
        Set rg = Cells(numLig, numCol)
     
        gauche = rg.Left + (rg.Width - LARGEUR) / 2
        haut = rg.Top + (rg.Height - HAUTEUR) / 2
     
        ActiveSheet.Shapes.AddShape msoShapeRectangle, gauche, haut, LARGEUR, HAUTEUR
    End Sub

  4. #4
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci à vous deux (pour la rapidité et l'exactitude) !! C'est exactement ce que je voulais, ça fonctionne.
    Je vais décortiquer le programme pour le comprendre.
    Je vois que j'ai encore beaucoup à apprendre sur VBA...

    Encore merci

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

Discussions similaires

  1. Boucle for pour joindre plusieurs colonnes
    Par Rionma dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 23/07/2014, 12h35
  2. Réponses: 1
    Dernier message: 18/02/2008, 20h21
  3. création d'une boucle for pour interrogation requête sql
    Par philder62 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/12/2007, 16h14
  4. Réponses: 7
    Dernier message: 10/10/2007, 20h23
  5. Réponses: 2
    Dernier message: 29/08/2006, 14h59

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