N'arrive pas à récuperer la valeur d'une cellule
geoff's
Messages postés
30
Date d'inscription
Statut
Membre
Dernière intervention
-
lermite222 Messages postés 8724 Date d'inscription Statut Contributeur Dernière intervention -
lermite222 Messages postés 8724 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Dans un code vba, je souhaite recuperer la valeur de différentes cellules.
En faisant un msgbox de la valeur de la cellule, case vide, donc ca ne fonctionne pas.
Ma question est pourquoi?
Merci d'avance.
Ci-joint le code:
Dans un code vba, je souhaite recuperer la valeur de différentes cellules.
En faisant un msgbox de la valeur de la cellule, case vide, donc ca ne fonctionne pas.
Ma question est pourquoi?
Merci d'avance.
Ci-joint le code:
Sub moyenne() Dim i As Integer Dim total As Integer Dim moy As Integer Dim Lig As Integer Dim Col As Integer Lig = 1 Col = 1 i = 0 total = 0 Set WBCollection = New Collection WBCollection.Add "C:\Excel\02_06_13\Prod Client.xlsm" WBCollection.Add "C:\Excel\02_07_13\Prod Client.xlsm" Set test = Workbooks.Open("C:\Excel\Test") For Lig = 5 To 6 For Col = 15 To 16 i = 0 total = 0 moy = 0 For Each wkb In WBCollection Set myWk = Workbooks.Open(wkb) total = total + myWk.Sheets("General").Cells(Lig, Col).Value MsgBox (myWk.Sheets("General").Cells(Lig, Col)) MsgBox (total) i = i + 1 myWk.Close Set myWk = Nothing Next moy = total / i test.Sheets("moyenne").Cells(Lig, Col) = moy Next Col Next Lig test.Close End Sub
A voir également:
- N'arrive pas à récuperer la valeur d'une cellule
- Recuperer message whatsapp supprimé - Guide
- Aller à la ligne dans une cellule excel - Guide
- Comment recuperer une video sur youtube - Guide
- Excel cellule couleur si condition texte - Guide
- Récupérer mon compte facebook désactivé - Guide
8 réponses
Bonjour,
Comprend pas ! pourquoi des collections ?
Tu veux faire une moyenne de différentes cellules sur deux classeurs ?
A+
Comprend pas ! pourquoi des collections ?
Tu veux faire une moyenne de différentes cellules sur deux classeurs ?
A+
La collection c'est que je fais la moyenne de plusieurs valeurs ds la meme cellule mais ds des fichiers excel différents. Quelque chose à voir ac mon pb tu pense?
Oui, mais tu te mélange les pinceaux !! :=)
Si je lis entre les lignes...
Tu veux la moyenne des plages O5:P6
Cumulées ou deux résultats ?
Si je lis entre les lignes...
Tu veux la moyenne des plages O5:P6
Cumulées ou deux résultats ?
Euh, comprend pas trop :)
Pour t'expliquer j'ai 2 fichiers excel je veux en avoir un troisième qui serait la moyenne des 2 premiers.
Donc pour chaque cellule, je prends la valeur dans chaque fichier excel, fait la moyenne et met ca ds un troisième fichier.
Clair ou pas?
Sinon pourquoi je me mélange les pinceaux? que fais-je de mal :)?
Pour t'expliquer j'ai 2 fichiers excel je veux en avoir un troisième qui serait la moyenne des 2 premiers.
Donc pour chaque cellule, je prends la valeur dans chaque fichier excel, fait la moyenne et met ca ds un troisième fichier.
Clair ou pas?
Sinon pourquoi je me mélange les pinceaux? que fais-je de mal :)?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Essaye quelque chose comme ça...
J'ai employé une boucle, je suppose que tu auras plus de deux classeurs à analyser.
J'ai pas testé, je n'ai pas tes classeurs.
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Note: Je ne répond pas aux MP pour les questions techniques. Et ma boule de cristal est cassée .
Sub moyenne() Dim Wkb As Workbook Dim Classeurs Dim M() As Single Dim A As Range Dim i As Integer Classeurs = Array("C:\Excel\02_06_13\Prod Client.xlsm", "C:\Excel\02_07_13\Prod Client.xlsm") ReDim M(UBound(Classeurs) - 1) For i = 0 To UBound(Classeurs) - 1 With Workbooks.Open(Classeurs(i)) Set A = .Worksheets("General").Range("O5:P6") M(i) = Application.WorksheetFunction.Average(A) .Close End With Next i Workbooks.Open ("C:\Excel\Test") For i = 0 To UBound(Classeurs) - 1 Sheets("moyenne").Cells(5 + i, 15) = M(i) Next i End Sub
J'ai employé une boucle, je suppose que tu auras plus de deux classeurs à analyser.
J'ai pas testé, je n'ai pas tes classeurs.
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Note: Je ne répond pas aux MP pour les questions techniques. Et ma boule de cristal est cassée .
Bonjour lermite,
C'est normal que le retour du MsgBox soit vide ... le code est incohérent.
Les variables sont initialisées à zéro dans la 2ème boucle For ... Next !!!
De plus, le For Each wkb In WBCollection n'est pas à sa place !!!
Et je ne parle pas des variables non déclarées ...
«Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
Nicolas Boileau
C'est normal que le retour du MsgBox soit vide ... le code est incohérent.
Les variables sont initialisées à zéro dans la 2ème boucle For ... Next !!!
De plus, le For Each wkb In WBCollection n'est pas à sa place !!!
For Each wkb In WBCollection Set myWk = Workbooks.Open(wkb) For Lig = 5 To 6 For Col = 15 To 16 total = total + CInt(myWk.Sheets("General").Cells(Lig, Col).Value) i = i + 1 Next Col Next Lig myWk.Close Set myWk = Nothing Next wkb
Et je ne parle pas des variables non déclarées ...
«Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
Nicolas Boileau
Polux,
Si Wkb est bien a sa place. Je ne veux pas la moyenne d'un ensemble de cellules d'un fichier excel, je veux la moyenne d'une cellule de plusieurs fichiers excel.
Donc je veux un total en parcourant mes fichiers, faire la moyenne et la rentrer dans un autre fichier. Ensuite passer à une autre cellule.
Donc normal de reinitialiser quand je veux refaire une moyenne..
Le raisonnement dans mon code est bon, après je ne sais pas ce qui cloche je parcoure bien toutes mes cellules dans mes différents fichiers (enfin j'ai l'impression mais ca marche po :(
Lermite, pas tout compris ds ton code :/.
Si Wkb est bien a sa place. Je ne veux pas la moyenne d'un ensemble de cellules d'un fichier excel, je veux la moyenne d'une cellule de plusieurs fichiers excel.
Donc je veux un total en parcourant mes fichiers, faire la moyenne et la rentrer dans un autre fichier. Ensuite passer à une autre cellule.
Donc normal de reinitialiser quand je veux refaire une moyenne..
Le raisonnement dans mon code est bon, après je ne sais pas ce qui cloche je parcoure bien toutes mes cellules dans mes différents fichiers (enfin j'ai l'impression mais ca marche po :(
Lermite, pas tout compris ds ton code :/.
Je n'avais pas du tout compris comme ça avec tes explications précédantes.
Ce code devrait faire l'affaire.
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Note: Je ne répond pas aux MP pour les questions techniques. Et ma boule de cristal est cassée .
Ce code devrait faire l'affaire.
Sub moyenne()
Dim Wks As Worksheet
Dim Classeurs
Dim i As Integer, Lig As Integer, Col As Integer, NB As Integer
Classeurs = Array("C:\Excel\02_06_13\Prod Client.xlsm", "C:\Excel\02_07_13\Prod Client.xlsm")
NB = UBound(Classeurs) - 1
Workbooks.Open ("C:\Excel\Test")
Set Wks = Sheets("Moyenne")
For i = 0 To NB
With Workbooks.Open(Classeurs(i))
With .Worksheets("General")
For Lig = 5 To 6
For Col = 15 To 16
Wks.Cells(Lig, Col) = Wks.Cells(Lig, Col) + .Cells(Lig, Col)
Next Col
Next Lig
End With
.Close
End With
Next i
For Lig = 5 To 6
For Col = 15 To 16
Wks.Cells(Lig, Col) = Wks.Cells(Lig, Col) / (NB + 1)
MsgBox "Moyenne " & Wks.Cells(Lig, Col).Address & Chr(13) _
& Wks.Cells(Lig, Col).Value
Next Col
Next Lig
End Sub
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Note: Je ne répond pas aux MP pour les questions techniques. Et ma boule de cristal est cassée .