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 26/01/2012, 16h55   #1
Invité de passage
 
Inscription : avril 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 4
Points : 0
Points : 0
Par défaut probleme selection feuille

Bonjour,

j'ai un petit soucis, surement pas grand chose mais la je seche.

Dans ma macro, je demande par le biais d'une inputbox le numéro du mois.
le resultat est stocké dans "mois1"
j'ai des feuilles nommées 1,2,3 ...12 pour les 12 mois.
Je veux allez recupérer des données dans ces feuilles pour les copié dans une autre et la j'ai un message d'erreur disant l'indice n'appartient pas a la selection

Je vous mets une partie du code

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
37
38
39
40
 
Sub génération_bilan()
Dim mois1 As String
 
mois1 = InputBox("quel mois?(en chiffre)")
 
Call mdc
 
End Sub
 
Sub mdc()
 
Sheets("mdc").Activate
Application.ScreenUpdating = False
 
For a = 32 To 35 Step 1
 
 
'tete
Cells(11, 2) = Worksheets(mois1).Cells(a, 28)
Cells(12, 2) = Worksheets(mois1).Cells(a, 39)
Cells(13, 2) = Worksheets(mois1).Cells(a, 50)
 
'enregistrer
Range("A1:K38").Select
    ChDir "C:\Users\LFRBOD3\Desktop"
    Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "V:\prévention-environnement\ACCIDENT DU TRAVAIL\STATS AT\communication sections\" & Cells(1, 1).Value & "__" & mois & ".pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        False
 
Next a
 
 
 
 
 
 
 
End Sub

merci d'avance
dave.bonnin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 19h26   #2
Expert Confirmé
 
Philippe Tulliez
Développeur et formateur VBA, Excel et Word.
Inscription : janvier 2010
Messages : 1 313
Détails du profil
Informations personnelles :
Nom : Philippe Tulliez
Localisation : Belgique

Informations professionnelles :
Activité : Développeur et formateur VBA, Excel et Word.

Informations forums :
Inscription : janvier 2010
Messages : 1 313
Points : 2 679
Points : 2 679
Bonsoir,
La variable mois1 est inconnue dans ta procédure mdc.
Soit tu la déclares au niveau du module soit tu prévois un argument à ta procédure mdc permettant de transmettre à cette dernière la valeur de mois1
Petit exemple pour la solution 2
Je te conseille vivement de faire précéder ton code par Option Explicit, tu aurais tout de suite vu d'où venait ton problème.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Option Explicit
Sub génération_bilan()
 Dim mois1 As String
 mois1 = InputBox("quel mois?(en chiffre)")
 Call mdc(mois1)
End Sub
Sub mdc(nMois)
 Sheets("mdc").Activate
 Application.ScreenUpdating = False
 For a = 32 To 35 Step 1
  ' Tete
  Cells(11, 2) = Worksheets(nMois).Cells(a, 28)
  Cells(12, 2) = Worksheets(nMois).Cells(a, 39)
  Cells(13, 2) = Worksheets(nMois).Cells(a, 50)
  ' Enregistrer
  Range("A1:K38").Select
      ChDir "C:\Users\LFRBOD3\Desktop"
      Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
          "V:\prévention-environnement\ACCIDENT DU TRAVAIL\STATS AT\communication sections\" & Cells(1, 1).Value & "__" & mois & ".pdf", Quality:=xlQualityStandard, _
          IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
          False
 Next a
End Sub
__________________
Philippe Tulliez
http://philippe.tulliez.be
Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)

Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
corona est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 16h43   #3
Invité de passage
 
Inscription : avril 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 4
Points : 0
Points : 0
merci pour ta rapidité et surtout ton efficacité.

maintenant, pour bien comprendre encore une chose.

comment je fais si j'ai plusieurs variable à transmettre?

et pourquoi passer de :
Call mdc(mois1)
à
Sub mdc(nMois)

Pourquoi ne garde ton pas mois1 apres sub mdc?

merci
dave.bonnin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 23h00   #4
Membre Expert
 
Homme
Inscription : décembre 2011
Messages : 566
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2011
Messages : 566
Points : 1 081
Points : 1 081
Bonsoir,

Citation:
Pourquoi ne garde ton pas mois1 apres sub mdc?
C'est un problème de portée de variable.
Une variable déclarée dans une fonction n'existe que dans cette fonction.
Les limites de fonction sont repérées par
Code :
Sub <nom de fonction>(<paramètres>)
et
Donc mois1 n'existe que dans génération_bilan().
Et nMois n'existe que dans mdc()
>>ici<< voir § Les niveaux de variables
BlueMonkey est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



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


 
 
 
 
Partenaires

Hébergement Web