Utiliser la valeur d'une cellule
Fermé
geoff's
Messages postés
30
Date d'inscription
vendredi 8 mars 2013
Statut
Membre
Dernière intervention
5 décembre 2013
-
Modifié par pijaku le 4/12/2013 à 16:04
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 6 déc. 2013 à 07:17
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 6 déc. 2013 à 07:17
A voir également:
- Utiliser la valeur d'une cellule
- Utiliser chromecast - Guide
- Aller à la ligne dans une cellule excel - Guide
- Excel cellule couleur si condition texte - Guide
- Verrouiller cellule excel - Guide
- Faites afficher avec un fond coloré les cellules qui contiennent une valeur comprise entre 250 et 350. quel nombre est dessiné en surbrillance ? - Forum VB / VBA
8 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
Modifié par pijaku le 4/12/2013 à 16:30
Modifié par pijaku le 4/12/2013 à 16:30
Bonjour,
Un petit exemple :
Cordialement,
Franck
Un petit exemple :
Sub moyenne() Dim i As Integer Dim total As Long 'Long est préféré à Integer car permet des chiffres plus grands Dim moyenne As Integer Dim Lig As Integer Dim Col As Integer 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" '// Début boucle sur les classeurs For Each wkb In WBCollection '// ouverture du classeur Set myWk = Workbooks.Open(wkb) '// Boucle sur les lignes 22 à 32 For Lig = 22 To 32 '// Boucle sur les colonnes de C à G For Col = 3 To 7 If Not IsNumeric(myWk.Worksheets("Feuil1").Cells(Lig, Col).Value) Then MsgBox "La valeur située Classeur " & Wk.Name & " Ligne " & Lig & " Colonne " & Col & "n'est pas un nombre" Exit Sub Else total = total + CLng(myWk.Worksheets("Feuil1").Cells(Lig, Col).Value) End If i = i + 1 Next Col Next Lig myWk.Close Set myWk = Nothing Next moyenne = total / i Workbooks("moyenne").Worksheets("Feuil1").Range("C22") = moyenne '// Fin boucle End Sub
Cordialement,
Franck
geoff's
Messages postés
30
Date d'inscription
vendredi 8 mars 2013
Statut
Membre
Dernière intervention
5 décembre 2013
4 déc. 2013 à 16:32
4 déc. 2013 à 16:32
Bonjour,
Merci ca marche beaucoup mieux maintenant!
Merci ca marche beaucoup mieux maintenant!
geoff's
Messages postés
30
Date d'inscription
vendredi 8 mars 2013
Statut
Membre
Dernière intervention
5 décembre 2013
4 déc. 2013 à 16:56
4 déc. 2013 à 16:56
Nouveau problèmes:
Pour rentrer les valeurs dans mon tableau excel actif,
je fais
Sheets("moyenne").Cells(Lig, Col) = moy
avec moy = total / i
=> erreur d'execurtion 9 l'indice n'appartient pas a la selection :(
Est-ce la divison par i qu'il n'aime pas?
Pour rentrer les valeurs dans mon tableau excel actif,
je fais
Sheets("moyenne").Cells(Lig, Col) = moy
avec moy = total / i
=> erreur d'execurtion 9 l'indice n'appartient pas a la selection :(
Est-ce la divison par i qu'il n'aime pas?
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
4 déc. 2013 à 17:07
4 déc. 2013 à 17:07
Slt,
Qu'elle est la valeur de lig et de col ? Comment sont-ils initialisés ?
Qu'elle est la valeur de lig et de col ? Comment sont-ils initialisés ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
melanie1324
Messages postés
1504
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
4 déc. 2013 à 17:25
4 déc. 2013 à 17:25
Re,
donc il faut modifier mon code :
donc il faut modifier mon code :
Sub moyenne() Dim i As Integer Dim total As Integer Dim moyenne As Integer dim colonne as integer dim ligne as integer 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" // Début boucle For Each wkb In WBCollection Set myWk = Workbooks.Open(wkb) for ligne = 1 to 25 for colonne = 1 to 30 total = total + myWk.Worksheet("Feuil1").cells(ligne,colonne).value next colonne next ligne myWk.Close Set myWk = Nothing i=i+1 Next moyenne = total / i Workbooks("moyenne").Worksheet("Feuil1").Range("C22") = moyenne // Fin boucle End sub
geoff's
Messages postés
30
Date d'inscription
vendredi 8 mars 2013
Statut
Membre
Dernière intervention
5 décembre 2013
5 déc. 2013 à 14:32
5 déc. 2013 à 14:32
Hum, nouveau problème...
J'utilise la commande Workbook.Sheets("Feuil1").cells(Lig,Col).value dans la ligne suivante:
total = total + myWk.Sheets("General").Cells(Lig, Col).Value
cependant, en faisant un MsgBox (myWk.Sheets("General").Cells(Lig, Col)), il me retourne une case vide, donc je ne peux pas faire mes calculs par la suite...
Quelqu'un aurait une explication?
Merci.
J'utilise la commande Workbook.Sheets("Feuil1").cells(Lig,Col).value dans la ligne suivante:
total = total + myWk.Sheets("General").Cells(Lig, Col).Value
cependant, en faisant un MsgBox (myWk.Sheets("General").Cells(Lig, Col)), il me retourne une case vide, donc je ne peux pas faire mes calculs par la suite...
Quelqu'un aurait une explication?
Merci.
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
5 déc. 2013 à 14:58
5 déc. 2013 à 14:58
Il y a quelque chose dans la cellule à la ligne et dans la colonne de Cells(lig, col) ?
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
5 déc. 2013 à 16:07
5 déc. 2013 à 16:07
1- La syntaxe Workbook.Sheets n'est pas bonne,
2- Feuille "General" ou Feuil1??? Si tu confonds, tu n'auras pas tes valeurs..............
2- Feuille "General" ou Feuil1??? Si tu confonds, tu n'auras pas tes valeurs..............
geoff's
Messages postés
30
Date d'inscription
vendredi 8 mars 2013
Statut
Membre
Dernière intervention
5 décembre 2013
5 déc. 2013 à 16:09
5 déc. 2013 à 16:09
Oui il y a quelque chose c'est "General" le nom de ma feuille j'ai mis Feuil1 pour info.
La formule que j'utilise est:
total = total + myWk.Sheets("General").Cells(Lig, Col).Value
et la feuille General existe, et n'est pas vide !
La formule que j'utilise est:
total = total + myWk.Sheets("General").Cells(Lig, Col).Value
et la feuille General existe, et n'est pas vide !
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
6 déc. 2013 à 07:17
6 déc. 2013 à 07:17
Si myWk.Sheets("General").Cells(Lig, Col).Value retourne 0 ou rien, c'est que la cellule située ligne Lig, colonne Col est vide.
Sans fichier, impossible pour nous d'aller plus loin.
Sans fichier, impossible pour nous d'aller plus loin.
melanie1324
Messages postés
1504
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
4 déc. 2013 à 16:18
4 déc. 2013 à 16:18
Bonjour,
Voici les solutions a tes pbs :
total = total + myWk.Worksheet("Feuil1").Range("C22").Value devient
total = total + myWk.sheets("Feuil1").Range("C22").Value
je pensais à Do While p < 25 mais apres faire un Range("Cp") ne marcherait surement pas donc je suis bloqué.
Et boucler aussi sur les colonnes c'est possible?
Voici les solutions a tes pbs :
total = total + myWk.Worksheet("Feuil1").Range("C22").Value devient
total = total + myWk.sheets("Feuil1").Range("C22").Value
je pensais à Do While p < 25 mais apres faire un Range("Cp") ne marcherait surement pas donc je suis bloqué.
Et boucler aussi sur les colonnes c'est possible?
[/contents/446-fichier-sub Sub] moyenne() Dim i As Integer Dim total As Integer Dim moyenne As Integer dim colonne as integer dim ligne as integer 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" // Début boucle For Each wkb In WBCollection Set myWk = Workbooks.Open(wkb) for ligne = 1 to 25 for colonne = 1 to 30 total = total + myWk.Worksheet("Feuil1").cells(ligne,colonne).value next colonne next ligne myWk.Close Set myWk = Nothing Next moyenne = total / 25 Workbooks("moyenne").Worksheet("Feuil1").Range("C22") = moyenne // Fin boucle End Sub
melanie1324
Messages postés
1504
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
Modifié par melanie1324 le 4/12/2013 à 17:16
Modifié par melanie1324 le 4/12/2013 à 17:16
Bonjour,
Tu ne peux pas diviser par i car si tu regardes le code : i = 0
donc si i = 0, tu ne peux pas faire la division par zéro.
Alors voici comment modifier ton code, i s'incrémentera à chaque fois que tu ajouteras une valeur à total :
Tu ne peux pas diviser par i car si tu regardes le code : i = 0
donc si i = 0, tu ne peux pas faire la division par zéro.
Alors voici comment modifier ton code, i s'incrémentera à chaque fois que tu ajouteras une valeur à total :
[/contents/446-fichier-sub Sub] moyenne() Dim i As Integer Dim total As Integer Dim moyenne As Integer dim colonne as integer dim ligne as integer 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" // Début boucle For Each wkb In WBCollection Set myWk = Workbooks.Open(wkb) for ligne = 1 to 25 for colonne = 1 to 30 total = total + myWk.Worksheet("Feuil1").cells(ligne,colonne).value i=i+1 next colonne next ligne myWk.Close Set myWk = Nothing Next moyenne = total / i Workbooks("moyenne").Worksheet("Feuil1").Range("C22") = moyenne // Fin boucle End Sub
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
4 déc. 2013 à 17:15
4 déc. 2013 à 17:15
Dans l'exemple de Pikaju, i est incrémenté dans la 2ème boucle For ... Next.
Le message d'erreur indique que "l'indice n'appartient à la sélection" et non que la division par zéro est impossible !!!
Ensuite, dans ta solution, tu incrémentes i mais tu ne t'en sers pas ???
Le message d'erreur indique que "l'indice n'appartient à la sélection" et non que la division par zéro est impossible !!!
Ensuite, dans ta solution, tu incrémentes i mais tu ne t'en sers pas ???
melanie1324
Messages postés
1504
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
4 déc. 2013 à 17:16
4 déc. 2013 à 17:16
une erreur de ma part.
geoff's
Messages postés
30
Date d'inscription
vendredi 8 mars 2013
Statut
Membre
Dernière intervention
5 décembre 2013
4 déc. 2013 à 17:19
4 déc. 2013 à 17:19
i est bien incrémenté donc le pb ne vient pas de la (j'ai testé en divisant par un nombre arbitraire toujours erreur)
geoff's
Messages postés
30
Date d'inscription
vendredi 8 mars 2013
Statut
Membre
Dernière intervention
5 décembre 2013
4 déc. 2013 à 17:21
4 déc. 2013 à 17:21
i me sert à faire ma moyenne (je divise par i qui est le nombre de fichier ds ma collection au final).
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
4 déc. 2013 à 17:23
4 déc. 2013 à 17:23
Voir ici
Vérifie que le nom de ta feuille est correct ... "Moyenne" et "moyenne" est différent pour Excel
Vérifie que le nom de ta feuille est correct ... "Moyenne" et "moyenne" est différent pour Excel