Copier le contenu de plusieurs Cells dans une variable sans utiliser active

#Bonjour,

#Une fois encore je me suis bien inspiré de vos réponses mais là je sèche.

#Je souhaites copier le contenu de plusieurs cellules dans une variable() sans passer par => Sheets("Feuil1").Activate

#Alors là ou je sèche c'est que la fonction suivante fonctionne avec la feuil2 activée :

SaveDataA = Workbooks(Nom).Worksheets(WorksheetsNameA).Range("A1:F1")

#mais par contre si je rajoute des variable à la place des cellules fixe, impossible sans passer par => Sheets("Feuil1").Activate

Sheets(WorksheetsNameA).Activate

SaveDataA = Workbooks(Nom).Worksheets(WorksheetsNameA).Range(Cells(BoucleA, SageDataANumColoneStart), Cells(BoucleA, SageDataANumColoneEnd))

#J'ai donc remplacé mes variables par le numéro des lignes colones mais tjs même erreur.

Sheets(WorksheetsNameA).Activate

SaveDataA = Workbooks(Nom).Worksheets(WorksheetsNameA).Range(Cells(1, 1), Cells(1, 7))

#Si je retire => Sheets("Feuil1").Activate

#On a une erreur d'exécution 1004

#Forcement il faut lancer le code sur une autre feuille que celle "WorksheetsNameA"

#Si l'un de vous à une idée je suis prenneur merci d'avance.

#Bonne journée

#Seb

Bonjour

Tu devrais nous expliquer tout ça en joignant un fichier exemple…

Bye !

Voici en Annexe le fichier

Je viens aussi de constater que si je détermine SaveDataA comme étant un tableau un niveau dim en ajoutant () ça plante, pourtant si je laisse SaveDataA sans "()" et que je fait un ReDim ça passe pour le code 1. Le code 2 et 3 lui ne fonctionne pas à partir du moment ou l'on se place sur la feuil2

Sub test()

Dim WorksheetsNameA As String

Dim SageDataANumColoneEnd As Integer

Dim BoucleA As Integer

Dim SageDataANumColoneStart As Integer

Dim SaveDataA As Variant ' Dim SaveDataA() As Variant '

Dim Nom As String

Nom = ThisWorkbook.Name

SageDataANumColoneStart = 1

SageDataANumColoneEnd = 7

WorksheetsNameA = "Test"

BoucleA = 1

ReDim SaveDataA(SageDataANumColoneEnd - 1)

'Code 1

'-------

SaveDataA = Workbooks(Nom).Worksheets(WorksheetsNameA).Range("A1:F1")

'Code 2

'--------

'Sheets(WorksheetsNameA).Activate

'SaveDataA = Workbooks(Nom).Worksheets(WorksheetsNameA).Range(Cells(1, 1), Cells(1, 7))

'code 3

'-------

'Sheets(WorksheetsNameA).Activate

'SaveDataA = Workbooks(Nom).Worksheets(WorksheetsNameA).Range(Cells(BoucleA, SageDataANumColoneStart), Cells(BoucleA, SageDataANumColoneEnd))

End Sub

7testbug.xlsm (16.63 Ko)

Bonjour

en passant par une variable de type worksheet voici une solution

        
               Dim sh As Worksheet
               Set sh = ThisWorkbook.Sheets(WorksheetsNameA)
      ' ReDim SaveDataA(SageDataANumColoneEnd - 1)

'Code 1
'-------
SaveDataA = Workbooks(Nom).Worksheets(WorksheetsNameA).Range("A1:F1").Value

'Code 2
'--------
'Sheets(WorksheetsNameA).Activate
SaveDataA = sh.Range(sh.Cells(1, 1), sh.Cells(1, 7)).Value

'code 3
'-------
'Sheets(WorksheetsNameA).Activate
SaveDataA = sh.Range(sh.Cells(BoucleA, SageDataANumColoneStart), sh.Cells(BoucleA, SageDataANumColoneEnd)).Value

fred

Ha oui le ". Value" j'avais oublié pourtant je l'avais mis lors d'un des X essai.

Ca règle problème du tableau mais par contre si je place le code 1 en commentaire et ne retire que le commentaire de la ligne (code 2)

SaveDataA = Workbooks(Nom).Worksheets(WorksheetsNameA).Range(Cells(1, 1), Cells(1, 7)).Value

J'ai une erreur d'exécution 1004 défini par l'objet ou l'application

Le but étant d'avoir le code 3 au final fonctionnant comme le code 1 sans activé la feuille lol

merci déjà pour vos recherche

Re

j'avais pas compris correctement la demande... j'ai entre temps mis a jour ma réponse précédente merci de la consultée de nouveau...

fred

1000000000 Merci tu viens de m'aider et je vais passer un bon Week end car ça me prend la tête depuis hier après midi.

Comme je fais un max pour ne plus utiliser les Selct, Active,... ça m'énervait de ne pas trouver

Bon Week end à toi et super contant de t'avoir lu.

Seb

Bonne continuation....

Fred

Rechercher des sujets similaires à "copier contenu variable utiliser active"