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 13/10/2011, 17h33   #1
Invité de passage
 
Homme Michael
Enseignant
Inscription : octobre 2011
Messages : 2
Détails du profil
Informations personnelles :
Nom : Homme Michael
Localisation : France

Informations professionnelles :
Activité : Enseignant
Secteur : Enseignement

Informations forums :
Inscription : octobre 2011
Messages : 2
Points : 0
Points : 0
Par défaut boucle dans VBA

Bonjour,

Je suis completement novice en VBA mais j'aurais besoin de faire une boucle et je n'y arrive pas...voila les trois premieres etapes (recopiées en manuel) pour que vous comprenniez.
Merci d'avance pour votre aide...
l'idée est de faire une boucle de 1 à N pour ne pas à devoir recopier N fois la même chose.
merci d'avance.

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
33
34
35
36
    Sheets("NOM").Select
    Sheets("NOM").Copy After:=Sheets(3)
    Range("A1:B1").Select
    ActiveCell.FormulaR1C1 = "='liste des élèves'!R[2]C[1]"
    Range("D3").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(ISBLANK('notes globales'!RC[1]),"""",'notes globales'!RC[1])"
    Range("D3").Select
    Selection.AutoFill Destination:=Range("D3: D51"), Type:=xlFillDefault
    Range("D3: D51").Select
    Range("E49").Select
'---------------------
    Sheets("NOM (2)").Select
    Sheets("NOM (2)").Copy After:=Sheets(4)
    Range("A1:B1").Select
    ActiveCell.FormulaR1C1 = "='liste des élèves'!R[3]C[1]"
    Range("D3").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(ISBLANK('notes globales'!RC[2]),"""",'notes globales'!RC[2])"
    Range("D3").Select
    Selection.AutoFill Destination:=Range("D3: D51"), Type:=xlFillDefault
    Range("D3: D51").Select
    Range("E51").Select
'---------------------
    Sheets("NOM (3)").Select
    Sheets("NOM (3)").Copy After:=Sheets(5)
    ActiveWindow.SmallScroll Down:=-75
    Range("A1:B1").Select
    ActiveCell.FormulaR1C1 = "='liste des élèves'!R[4]C[1]"
    Range("D3").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(ISBLANK('notes globales'!RC[3]),"""",'notes globales'!RC[3])"
    Range("D3").Select
    Selection.AutoFill Destination:=Range("D3: D51")
    Range("D3: D51").Select
    Range("E20").Select


je trouve ça bête de devoir recopier alors qu'une boucle devrait fonctionner mais lorsque je place une variable apres les "RC[" par exemple il plante
merci
Michael
mlevesq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2011, 19h58   #2
Membre Expert
 
Homme Hervé Silve
Inscription : août 2010
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme Hervé Silve
Localisation : France

Informations forums :
Inscription : août 2010
Messages : 773
Points : 2 093
Points : 2 093
Bonsoir,

Comme ceci peut être ?
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
Sub Copier()
 
    Dim I As Integer
 
    For I = 1 To 3
 
        Sheets("NOM").Copy After:=Sheets(I + 2)
        [A1:B1].FormulaR1C1 = "='liste des élèves'!R[" & I + 1 & "]C[1]"
        [D3].FormulaR1C1 = "=IF(ISBLANK('notes globales'!RC[" & I & "]),"""",'notes globales'!RC[" & I & "])"
        [D3].AutoFill Range("D3:D51")
 
    Next I
 
End Sub
Hervé.
Theze est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2011, 15h23   #3
Invité de passage
 
Homme Michael
Enseignant
Inscription : octobre 2011
Messages : 2
Détails du profil
Informations personnelles :
Nom : Homme Michael
Localisation : France

Informations professionnelles :
Activité : Enseignant
Secteur : Enseignement

Informations forums :
Inscription : octobre 2011
Messages : 2
Points : 0
Points : 0
merci ! ça fonctionne .... impeccable !
michael

En fait j'avais essayé de mettre les "I+1" dans les lignes mais je ne mettais pas les "&"...du coup ça plantait !
merci encore.
michael
mlevesq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2011, 17h19   #4
Membre Expert
 
Homme Hervé Silve
Inscription : août 2010
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme Hervé Silve
Localisation : France

Informations forums :
Inscription : août 2010
Messages : 773
Points : 2 093
Points : 2 093
Bonjour,

C'est pour ça qu'il est conseiller de faire un Debug.Print ou un MsgBox pour contrôler le résultat de la chaine que l'on veux construire comme par exemple :
Code :
1
2
3
4
 
MsgBox "=IF(ISBLANK('notes globales'!RC[" & I & "]),"""",'notes globales'!RC[" & I & "])"
'ou
Debug.Print "=IF(ISBLANK('notes globales'!RC[" & I & "]),"""",'notes globales'!RC[" & I & "])"
si la variable I apparaît sous sa forme littérale c'est qu'il y a un hic.

Bon WE.

Hervé.
Theze est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h07.


 
 
 
 
Partenaires

Hébergement Web