Selection d'un tableau selon une variable
Bonjour à tous.
Ceci est mon premier post sur ce forum, j’espère ne pas m'être trompé dans la section que j'ai choisi.
Voilà mon soucis.
Sur une feuille Excel, j'ai différents tableaux avec un nombre différents de lignes, mais les mêmes colonnes.
Sur une autre feuille, j'ai besoin de récupérer les données d'une colonne d'un de ces tableaux que l'utilisateur sélectionne via une liste déroulante.
Pour vous donner la procédure de ce que j’essaie de faire:
1/ Sur la feuille 1, l'utilisateur sélectionne en "B1" le tableau désiré dans une liste déroulante.
2/ Il appuie sur le bouton de la macro
3/ La macro lit la valeur en "B1" et l'enregistre dans une variable NomTABLEAU
4/ Elle va, en feuille 2, sélectionner la colonne x dans le tableau correspondant (dont le nom est enregisté dans la variable NomTABLEAU)
5/ Copié - Collé des donnés depuis le tableau en feuille 2 vers la feuille 1
Ce que je n'arrive pas à faire, c'est la partie de code où on dit que le tableau recherché est fonction de ce qu'il y a d'écrit dans une cellule. tout ce que j'arrive à faire c'est d'inscrire en dure quel tableau choisir avec ca:
Range("NomTABLEAU[Colone]").Select
Ce que j'aimerais c'est que NomTABLEAU soit variable
Je suis débutant en VBA et en code en général et j’espère que je suis clair dans mes propos et que vous aurez une réponses à m’apporter, car je ne trouve de réponse nul part en cherchant sur le net et les différents forum.
Merci pour l'aide que vous pouvez m'apporter avant que je ne m'arrache tous mes cheveux
Vender
Bonjour,
En l'absence de fichier et de code, je vais essayer de répondre au mieux à partir de ce que j'ai compris...
Toute la subtilité de Excel et VBA est de saisir l'utilisation et l'importance des guillemets. Ces derniers s'utilisent pour délimiter un texte qu'il n'y a pas lieu d'interpréter. Range("A1") correspond à la plage A1, pas au contenu d'une éventuelle variable A1. En revanche, on peut écrire :
Sub Test()
Dim MaVariable As String 'Déclaration d'une variable contenant un texte
MaVariable = "A1" 'Affectation d'une valeur à la variable
Range(MaVariable) = "Bonjour !" 'Utilisation du contenu de la variable
Range("MaVariable") = "Bonjour !" 'Génère une erreur, car il n'existe pas de plage appelée "MaVariable"... VBA n'a pas interprété MaVariable comme une variable dont on s'intéresse au contenu
End SubAutre exemple à tester :
Sub ComprendreGuillemets()
Nom = "Pedro"
i = 22
MsgBox Nom & i 'Renvoie Pedro22
MsgBox "Nom" & i 'Renvoie Nom22
MsgBox "Nom & i" 'Renvoie Nom & i
End SubBonjour à tous,
Comme exprimé par Pedro22, pas de fichier.
De ce que je comprends avec la création d'un fichier.
A te relire.
Cdlt.
Public Sub CopyData()
Dim rng As Range, rng2 As Range
With ActiveSheet
.Cells(3, 2).CurrentRegion.Delete
On Error Resume Next
Set rng = Range(.Cells(2))
On Error GoTo 0
If Not rng Is Nothing Then
Set rng2 = rng.ListObject.ListColumns(2).DataBodyRange
rng2.Copy
.Cells(3, 2).PasteSpecial xlPasteValues
End If
End With
Application.CutCopyMode = False
End SubMerci pour vos réponses rapides et claires.
@ Pedro22
Oui, j'avais compris l'importance des guillemets. Je savais juste pas comment me dépatouillé de tout ça avec dans mon cas présent
@ Jean-Eric.
Super!! C'est exactement ce que je cherchait à faire. Je viens de reprendre le bout de code que tu a fait et je l'ai modifié pour que ça s'adapte à mon code et mes feuilles de calculs et c'est parfait. C'est exactement ça.
Merci Messieurs pour votre aide. Autant j'arrivai à m'en sortir pour les autres trucs que je faisait sur mon code, autant là, je ramai comme pas possible.