Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/11/2011, 11h30   #1
Invité de passage
 
Femme
Étudiant
Inscription : 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 : 0
Points : 0
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 :
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
Type de fichier : xls Graphique essai.xls (27,5 Ko, 2 affichages)
zmpod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 11h39   #2
Membre régulier
 
Franck
Inscription : février 2008
Messages : 134
Détails du profil
Informations personnelles :
Nom : Franck
Localisation : France

Informations forums :
Inscription : février 2008
Messages : 134
Points : 89
Points : 89
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
__________________
Pour ceux qui aiment l'art martial vietnamien, les photos du VietNam ou apprendre le Vietnamien venez visiter le site de notre asso "Noi Gia Vo Dao" :
http://ngvodao.free.fr

francky74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 12h06   #3
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

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

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 858
Points : 1 858
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 :
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
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 13h22   #4
Invité de passage
 
Femme
Étudiant
Inscription : 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 : 0
Points : 0
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
zmpod est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h39.


 
 
 
 
Partenaires

Hébergement Web