Nommer onglet avec une variable
Résolu
arigold
-
arigold -
arigold -
Bonjour, Je débute en programmation vba et j'ai un problème.
Je vous l'explique avec un exemple de programme
Je vais pas mal changer d'onglet dans ma macro du coup j'aimerai pouvoir utiliser une variable test1 au lieu d'avoir à écrire sheets("test1") à chaque fois
J'imagine que c'est assez basique mais je ne sais pas comment ça marche donc si quelqu'un peut me filer un ptit conseil ça serait super sympa. Merci d'avance
Je vous l'explique avec un exemple de programme
Dim principal As Workbook
Dim test1, test2 As Worksheets
Set principal = ThisWorkbook
Set test1 = Sheets("test1")
principal.test1.range("A1") 'ne fonctionne pas alors que
principal.Sheets("test1").range("A1") 'fonctionne
Je vais pas mal changer d'onglet dans ma macro du coup j'aimerai pouvoir utiliser une variable test1 au lieu d'avoir à écrire sheets("test1") à chaque fois
J'imagine que c'est assez basique mais je ne sais pas comment ça marche donc si quelqu'un peut me filer un ptit conseil ça serait super sympa. Merci d'avance
A voir également:
- Nommer onglet avec une variable
- Nommez une application d'appel vidéo ou de visioconférence - Guide
- Rouvrir onglet fermé chrome - Guide
- Vba excel sélectionner une plage de cellules variable ✓ - Forum VB / VBA
- Nommez une alternative libre au logiciel propriétaire winzip. ✓ - Forum Compression
- Excel onglet données grisé ✓ - Forum Excel
2 réponses
Bonjour à tous,
essaye ce code :
en résumé : worksheets sans le "s" à la fin, déclarer test1 au même titre que test2, utiliser With...End With et le Activate pour que ça fonctionne.
cordialement
essaye ce code :
Sub toto() Dim principal As Workbook Dim test1 As Worksheet, test2 As Worksheet Set principal = ThisWorkbook Set test1 = principal.Sheets("test1") Set test2 = principal.Sheets("test2") test2.Activate [A1].ClearContents [D8].Select a = principal.Sheets("test1").Range("A1") 'fonctionne With test1 b = .Range("A1") .Range("A1").Copy Destination:=test2.Range("A1") End With test1.Activate Range("A1").Select End Sub
en résumé : worksheets sans le "s" à la fin, déclarer test1 au même titre que test2, utiliser With...End With et le Activate pour que ça fonctionne.
cordialement
c'est histoire d'éviter de réécrire sheets("...") à chaque fois.
En tout cas merci pour ton aide Via
Au départ tu déclares par exemple 2 noms de feuilles t1="test1" et t2="test2"
Apres dans ta macro soit tu as Sheets(t1).Range("A1") qui fait référence à la feuille test1 ou sheets(t2).range("A1") qui fait reference à la feuille test2
ou bien tu as une instruction avec comme variable par exemple nomf et tu indiques précédement (par exemple en fonction d'une condition) quelle valeur doit prendre nomf
ex
If reponse=1 then nomf=t1 else if reponse=2 then nomf=t2
sheets(nomf).range("A1") etc
Mais tu peux aussi faire référence aux feuilles non pas d'après leurs noms mais d'après leur ordre dans le classeur
ainsi sheets(3).select selectionne la 3eme feuille du classeur
Cdlmnt
Via