Bonjour,
Lorsque l'on veut inscrire des données dans un Worksheet, comment l'activer ou le sélectionner par son nom désigné par une variable qui correspond à la valeur d'une cellule?
Après avoir réussi à ouvrir un workbook dont le nom est désigné dans le contenu d'une cellule, pourquoi le code suivant ne fonctionne il pas ?
Ci-dessous mes explications un peu plus fastidieuses :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Dim mafeuille As Worksheet contenuB5 = Range("B5").Value 'this workbook mafeuille = monclasseur.Worksheets("contenuB5") 'monclasseur est le workbook destination et mafeuille la worksheet de destination mafeuille.Activate
J’ai créé un classeur excel"macst.xlsm" avec un onglet "source" qui ne sert qu'à contenir un formulaire pour saisir des données affectées à 10 variables.
Je souhaite enregistrer directement ces données dans des classeurs autres que celui qui contient mon userform (autre que ce qui est actif?).
Mes fichiers de destination sont une cinquantaine de classeurs Excel différents situés dans un même répertoire (dossier de fichiers .xlsx) avec un grand nombre de worksheet mais tous conçus exactement de la même manière.
Pour désigner un classeur de destination spécifique, dans mon classeur "macst" sur mon onglet "source" j'ai inscrit en B4 le nom du classeur destination et en B5 le nom de l'onglet/worksheet de destination. Dans ma macro mon code est :
Ce qui fonctionne et m'ouvre le classeur de destination choisi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Dim monclasseur As Workbook contenuB4 = Range("B4").Value Set monclasseur = Workbooks.Open(Filename:="\\C:\Users\Channel\Documents\06. PRODUCTION & OPTIMISATION\06. VBA test\" & contenuB4 & ".xlsx")
Ce qui ne fonctionne pas et ne m'ouvre pas l'onglet correspondant ... sachant que mes onglets ont des noms numériques
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Dim mafeuille As Worksheet contenuB5 = Range("B5").Value 'this workbook mafeuille = monclasseur.Worksheets("contenuB5") mafeuille.Activate
La suite de mon code pour enregistrer mes données dans des cellules à partir de mes variables fonctionne :
Mais les données ne s'exportent pas là où je le souhaite.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Range("A8").Value = dhab Range("B8").Value = refpo Range("C8").Value = cx etc...
Si j'écris : Worksheets("9900").Activate cela marche et m'ouvre l'onglet "9900" dans le bon classeur de destination mais ne me permet pas de changer le nom de l'onglet au fur et à mesure des différentes saisies
Si j'écris : Worksheets("contenuB5").Activate cela marche mais enregistre les données dans l'onglet actif "source" du classeur de la macro "macst"
1) Je n'arrive donc pas à faire le lien entre mon classeur de destination et son onglet de manière à l'activer, le sélectionner, écrire dessus...
2) Je ne suis pas très douée en syntaxe VBA car je ne comprends pas pourquoi on ne pourrait pas écrire : monclasseur.Worksheets("contenuB5").activate.
Quelqu'un pourrait il m'aider à trouver l'erreur dans mon code svp ?
Partager