web-dev-qa-db-fra.com

Obtenir des valeurs d'une autre feuille dans Excel à l'aide de VBA

Bonjour, je suis nouveau dans Excel et j’ai quelques problèmes pour obtenir les valeurs d’autres feuilles. 

J'ai quelques valeurs dans Excel (sheet2) par exemple:

    A  B  C  D
    -  -  -  -  
1 | 2  5  9  12
2 | 5  8  4  5
3 | 3  1  2  6

Je travaille avec ces valeurs dans sheet2 et je veux obtenir le résultat dans sheet1. Lorsque j'utilise mon code dans sheet2, j'obtiens la bonne réponse, mais lorsque j'essaie de l'utiliser dans différentes feuilles, le résultat des valeurs correspond aux cellules actuelles de la feuille et non à sheet2.

  • Je veux obtenir la somme de chaque colonne de la rangée 4. Je parviens à le faire, mais je ne peux l'utiliser que dans Sheet2.

J'utilise "With Application.WorksheetFunction" et je veux changer cela pour obtenir les valeurs de sheet2.

Pouvez-vous s'il vous plaît m'aider avec cela et comment définir feuille2 comme feuille d'activation.

J'espère que ma question est claire.

Je vous remercie

29
Apollon1954

Essayer

 ThisWorkbook.Sheets("name of sheet 2").Range("A1")

pour accéder à une plage de la feuille 2 indépendamment de l’emplacement de votre code ou de la feuille active. Pour que la feuille 2 devienne la feuille active, essayez

 ThisWorkbook.Sheets("name of sheet 2").Activate

Si vous avez simplement besoin de la somme d'une ligne dans une feuille différente, vous n'avez absolument pas besoin d'utiliser VBA. Entrez une formule comme celle-ci dans la feuille 1:

=SUM([Name-Of-Sheet2]!A1:D1)
42
Doc Brown

Ce sera (pour vous exemple très spécifique)

ActiveWorkbook.worksheets("Sheet2").cells(aRow,aCol).Value=someval

OR

someVal=ActiveWorkbook.worksheets("Sheet2").cells(aRow,aCol).Value

Obtenez donc un F1 clic et lisez sur la collection de feuilles de calcul, qui contient des objets de feuille de calcul, qui à son tour contient une collection de cellules, contenant des objets de cellule ...

17
jpinto3912
Sub TEST()
Dim value1 As String
Dim value2 As String
value1 = ThisWorkbook.Sheets(1).Range("A1").Value 'value from sheet1
value2 = ThisWorkbook.Sheets(2).Range("A1").Value 'value from sheet2
If value1 = value2 Then ThisWorkbook.Sheets(2).Range("L1").Value = value1 'or 2
End Sub

Ceci comparera les valeurs de deux feuilles et si elles correspondent, placer la valeur sur la feuille 2 dans la colonne L.

2
James Heffer

SomeVal = ActiveWorkbook.worksheets ("Sheet2"). Cells (aRow, aCol) .Value

n'a pas marché. Cependant, le code suivant ne fonctionnait que pour moi.

SomeVal = ThisWorkbook.Sheets (2) .cells (aRow, aCol) .Value

0
RanonKahn

Essayez la commande d'activation de feuille de calcul avant d'avoir besoin des données de la feuille:

objWorkbook.WorkSheets(1).Activate
objWorkbook.WorkSheets(2).Activate
0
Mike