Problème au cours d'une macro lié à une Variable

Bonjour,

Voici mon contexte :

Je cherche à faire des enregistrement PDF automatique (fonction que je maitrise)

J'ai un fichier excel avec un onglet "base" contenant divers graphiques un onglet "feuil1" contenant des numéro, et une dizaine d'onglet de 1 à 10 (qui sont nommés simplement de 1 à 10) ces onglets sont les endroit ou je vais aller pour faire mes enregistrement PDF, il s'agit de format que je souhaite respecter en fonction d'un numéro.

Ma macro répète 25 x la procédure suivante :

aller dans onglet Feuil1

descendre d'une cellule ; copié la cellule

aller dans onglet base ; collé la cellule (ce qui change mes graphique sur l'onglet base et qui change aussi mon chiffre (pour trouver le bon onglet)

aller dans l'onglet correspondant à la cellule

enregistrer PDF

Ci dessous Ong est ma variable qui va m'amener vers le bon onglet à enregistrer.

Dim Ong As String

Ong = Range("C23")

With Worksheets(Ong)

Mon problème est que lorsque je donné un = à ma variable à l'intérieur de ma boucle, j'ai un message d'erreur après la première boucle

Ci dessous ma Macro

Sub Export_tteDR_PDF()

Dim fichier As String

Dim Ong As String

Sheets("Feuil1").Select

Range("A1").Select

'début de la macro pour sélectionner la bonne cellule ou commencer

For i = 1 To 25

Selection.Copy

Sheets("Base").Select

Range("X27").Select

ActiveSheet.Paste

'mon numéro récuperé dans l'onglet "Feuil1" est copié, ce qui à changé ma cellule C23 la ou se trouve le numéro de la feuille ou je veux aller enregistrer mon PDF

Ong = Range("C23")

'du coup je définit ma variable Ong

With Worksheets(Ong)

fichier = "\" & .Range("B2") & ".pdf"

Dossier = "C:\Users\LEPAUL\Documents\testmacropdf"

Chemin = Dossier & fichier

.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin, Quality:=xlQualityStandard, _

IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

End With

Sheets("Feuil1").Select

ActiveCell.Offset(1, 0).Select

Next

End Sub

voila ou est le bug :

With Worksheets(Ong)

et l'erreur : "l'indice n'appartient pas à la sélection"

J'ai fais de nombreux tests et essais sans succès pour le moment...

Je peux vous donner d'autres infos si besoin, j'espere avoir été clair ..

Merci beaucoup pour votre aide !

Bonjour Nikolepal, bonjour le forum,

Quand on travaille sur différents onglets, si on veut éviter les erreurs, il faut spécifier le nom de l'onglet chaque fois que l'on utilise une cellule ou une plage (Range). Dans ce cas, pour simplifier l'écriture, j'utilise souvent une variable de type Worksheet :

Dim B As Worksheet
Dim F1 As Worksheet

Set B = Worksheets("Base")
setF1 = Worksheets("Feuil1")

Puis quand je fait allusion à une plage j'indique de quel onglet il s'agit. Ainsi j'évite les Select et simplifie ton code :

F1.Range("A1").Copy B.Range("X27")

Donc, ton code :

Ong = Range("C23") 

doit être :

Ong = Worksheets("le_nom_de_l'onglet").Range("C23")

ou, si tu as utilisé une variable :

Ong = B.Range("C23")

Tu verras que ça ne plantera plus. En règle générale : toujours éviter les Select inutiles...

Merci pour tes précieux conseils qui me seront très utiles pour la suite.

J'ai refait entièrement un fichier excel mais en version très simple, et tout fonctionnait....

En fait, un de mes onglet s'appelait avec le numéro en question mais suivi d'un espace ..... ce qui fesait bugué ma macro

Merci encore pour tes conseils !

Rechercher des sujets similaires à "probleme cours macro lie variable"