Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
bcar
Bonjour, La ligne
Range(j & 3, j & 367).Select
ne convient pas, il faudrait plutôt quelque chose du genre Range(Cells(3, j), Cells(367, j).select En fait, j est un Integer et toi tu essayes de concatener 2 integer "j & 3", ce qui n'a pas de sens.
Pour le range pour faire plus propre je préciserais la feuille concernée du genre : Dim sh as worksheet set sh = thisworkbook.worksheet("Feuil1") ' -- Par exemple sh.Range(sh.cells(...,...), sh.cells(...,...)) ' -- comme ca pas d'ambiguité possible
Pour le reste faire une boucle juste pour sélectionner... (mais j'imagine que c'est pour l'exemple.
Le 16/07/2010 09:58, Alex a écrit :
Bonjour à tous,
J'essai de faire une boucle, non pas sur des lignes mais des colonnes, mais je n'y arrive pas. J'ai écrit ceci :
Dim j As Integer Dim NbCol As Integer
NbCol = Range("B1").CurrentRegion.Columns.Count Range("B3").Select j = ActiveCell.Column For j = NbCol To 2 Step -1 Range(j & 3, j & 367).Select next j
Merci de votre aide. Cordialement. Alex
Bonjour,
La ligne
Range(j & 3, j & 367).Select
ne convient pas, il faudrait plutôt quelque chose du genre
Range(Cells(3, j), Cells(367, j).select
En fait, j est un Integer et toi tu essayes de concatener 2 integer "j &
3", ce qui n'a pas de sens.
Pour le range pour faire plus propre je préciserais la feuille concernée
du genre :
Dim sh as worksheet
set sh = thisworkbook.worksheet("Feuil1") ' -- Par exemple
sh.Range(sh.cells(...,...), sh.cells(...,...))
' -- comme ca pas d'ambiguité possible
Pour le reste faire une boucle juste pour sélectionner... (mais
j'imagine que c'est pour l'exemple.
Le 16/07/2010 09:58, Alex a écrit :
Bonjour à tous,
J'essai de faire une boucle, non pas sur des lignes mais des colonnes,
mais je n'y arrive pas. J'ai écrit ceci :
Dim j As Integer
Dim NbCol As Integer
NbCol = Range("B1").CurrentRegion.Columns.Count
Range("B3").Select
j = ActiveCell.Column
For j = NbCol To 2 Step -1
Range(j & 3, j & 367).Select
next j
ne convient pas, il faudrait plutôt quelque chose du genre Range(Cells(3, j), Cells(367, j).select En fait, j est un Integer et toi tu essayes de concatener 2 integer "j & 3", ce qui n'a pas de sens.
Pour le range pour faire plus propre je préciserais la feuille concernée du genre : Dim sh as worksheet set sh = thisworkbook.worksheet("Feuil1") ' -- Par exemple sh.Range(sh.cells(...,...), sh.cells(...,...)) ' -- comme ca pas d'ambiguité possible
Pour le reste faire une boucle juste pour sélectionner... (mais j'imagine que c'est pour l'exemple.
Le 16/07/2010 09:58, Alex a écrit :
Bonjour à tous,
J'essai de faire une boucle, non pas sur des lignes mais des colonnes, mais je n'y arrive pas. J'ai écrit ceci :
Dim j As Integer Dim NbCol As Integer
NbCol = Range("B1").CurrentRegion.Columns.Count Range("B3").Select j = ActiveCell.Column For j = NbCol To 2 Step -1 Range(j & 3, j & 367).Select next j
Merci de votre aide. Cordialement. Alex
Alex
Bonjour,
Merci de ta réponse. En effet, je n'ai mis qu'une seule ligne de données de ma boucle, il y a bien évidement d'autres instructions qui suivent.
Mais il y a un souci dans ta proposition de solution : Range(Cells(3, j), Cells(367, j).select En effet, cela ne fonctionne pas ??? Merci de votre aide Alex
Bonjour,
Merci de ta réponse. En effet, je n'ai mis qu'une seule ligne de
données de ma boucle, il y a bien évidement d'autres instructions qui
suivent.
Mais il y a un souci dans ta proposition de solution :
Range(Cells(3, j), Cells(367, j).select
En effet, cela ne fonctionne pas ???
Merci de votre aide
Alex
Merci de ta réponse. En effet, je n'ai mis qu'une seule ligne de données de ma boucle, il y a bien évidement d'autres instructions qui suivent.
Mais il y a un souci dans ta proposition de solution : Range(Cells(3, j), Cells(367, j).select En effet, cela ne fonctionne pas ??? Merci de votre aide Alex
Alex
Re :
En fait mon but est de faire faire la somme de mes cellules de couleur verte par chaque colonne dont voici le code :
Dim j As Integer
Dim NbCol As Integer Sheets("Planning").Select NbCol = Range("B1").CurrentRegion.Columns.Count j = ActiveCell.Columns For j = NbCol To 2 Step -1 Range((Cells(3, j)), (Cells(367, j))).Select For Each C In Selection If C.Interior.ColorIndex = 43 Then total = total + C.Value End If Next C RangeCells (j,371) = total Next j
mais ca ne fonctionne toujours pas !!!
Par avance merci de votre aide Cordialement. Alex
Re :
En fait mon but est de faire faire la somme de mes cellules de couleur
verte par chaque colonne dont voici le code :
Dim j As Integer
Dim NbCol As Integer
Sheets("Planning").Select
NbCol = Range("B1").CurrentRegion.Columns.Count
j = ActiveCell.Columns
For j = NbCol To 2 Step -1
Range((Cells(3, j)), (Cells(367, j))).Select
For Each C In Selection
If C.Interior.ColorIndex = 43 Then
total = total + C.Value
End If
Next C
RangeCells (j,371) = total
Next j
En fait mon but est de faire faire la somme de mes cellules de couleur verte par chaque colonne dont voici le code :
Dim j As Integer
Dim NbCol As Integer Sheets("Planning").Select NbCol = Range("B1").CurrentRegion.Columns.Count j = ActiveCell.Columns For j = NbCol To 2 Step -1 Range((Cells(3, j)), (Cells(367, j))).Select For Each C In Selection If C.Interior.ColorIndex = 43 Then total = total + C.Value End If Next C RangeCells (j,371) = total Next j
mais ca ne fonctionne toujours pas !!!
Par avance merci de votre aide Cordialement. Alex
bcar
Pour ce que tu veux faire, je ne vois pas l'intérêt de faire une sélection. Fait une simple boucle :
dim sh as Worksheet Dim i, as Long, j as Long dim nbCol as Long
set sh = Thisworkbook.worksheets("Planning")
' -- pour designer une cellule je prefere utiliser cells ' -- plutôt que range NbCol = = sh.cells(1, 2).CurrentRegion.Columns.Count ' -- jaurais peut être plutôt fait quelque chose comme ' -- sh.cells(1,2).end(xlright).column ' -- mais je ne sais pas comment sont présentées tes données
' -- ensuite je ferais un for naturel (pas step -1) ' -- a mons avis puisque tu utilise CurrentRegion.Columns.Count ' -- Il faudrait que tu fasses : nbcol + 1 ' -- -1 <=> ( +2 (colonne de départ) - 1) For j = 2 to NbCol For i = 3 to 367 ' -- La je trouve bizarre que tu partes de 3 et pas de 2... ' -- pas besoin de sélection, fais directement if sh.cells(i, j).interior.colorIndex = 43 then total = total + sh.cells(i, j) endif next i ' -- pourquoi la ligne 371 ??? sh.cells( 371, j ) = total ' -- RangeCells (j,371) ne veut rien dire next j
Le 16/07/2010 10:31, Alex a écrit :
Re :
En fait mon but est de faire faire la somme de mes cellules de couleur verte par chaque colonne dont voici le code :
Dim j As Integer
Dim NbCol As Integer Sheets("Planning").Select NbCol = Range("B1").CurrentRegion.Columns.Count j = ActiveCell.Columns For j = NbCol To 2 Step -1 Range((Cells(3, j)), (Cells(367, j))).Select For Each C In Selection If C.Interior.ColorIndex = 43 Then total = total + C.Value End If Next C RangeCells (j,371) = total Next j
mais ca ne fonctionne toujours pas !!!
Par avance merci de votre aide Cordialement. Alex
Pour ce que tu veux faire, je ne vois pas l'intérêt de faire une
sélection. Fait une simple boucle :
dim sh as Worksheet
Dim i, as Long, j as Long
dim nbCol as Long
set sh = Thisworkbook.worksheets("Planning")
' -- pour designer une cellule je prefere utiliser cells
' -- plutôt que range
NbCol = = sh.cells(1, 2).CurrentRegion.Columns.Count
' -- jaurais peut être plutôt fait quelque chose comme
' -- sh.cells(1,2).end(xlright).column
' -- mais je ne sais pas comment sont présentées tes données
' -- ensuite je ferais un for naturel (pas step -1)
' -- a mons avis puisque tu utilise CurrentRegion.Columns.Count
' -- Il faudrait que tu fasses : nbcol + 1
' -- -1 <=> ( +2 (colonne de départ) - 1)
For j = 2 to NbCol
For i = 3 to 367
' -- La je trouve bizarre que tu partes de 3 et pas de 2...
' -- pas besoin de sélection, fais directement
if sh.cells(i, j).interior.colorIndex = 43 then
total = total + sh.cells(i, j)
endif
next i
' -- pourquoi la ligne 371 ???
sh.cells( 371, j ) = total
' -- RangeCells (j,371) ne veut rien dire
next j
Le 16/07/2010 10:31, Alex a écrit :
Re :
En fait mon but est de faire faire la somme de mes cellules de couleur
verte par chaque colonne dont voici le code :
Dim j As Integer
Dim NbCol As Integer
Sheets("Planning").Select
NbCol = Range("B1").CurrentRegion.Columns.Count
j = ActiveCell.Columns
For j = NbCol To 2 Step -1
Range((Cells(3, j)), (Cells(367, j))).Select
For Each C In Selection
If C.Interior.ColorIndex = 43 Then
total = total + C.Value
End If
Next C
RangeCells (j,371) = total
Next j
Pour ce que tu veux faire, je ne vois pas l'intérêt de faire une sélection. Fait une simple boucle :
dim sh as Worksheet Dim i, as Long, j as Long dim nbCol as Long
set sh = Thisworkbook.worksheets("Planning")
' -- pour designer une cellule je prefere utiliser cells ' -- plutôt que range NbCol = = sh.cells(1, 2).CurrentRegion.Columns.Count ' -- jaurais peut être plutôt fait quelque chose comme ' -- sh.cells(1,2).end(xlright).column ' -- mais je ne sais pas comment sont présentées tes données
' -- ensuite je ferais un for naturel (pas step -1) ' -- a mons avis puisque tu utilise CurrentRegion.Columns.Count ' -- Il faudrait que tu fasses : nbcol + 1 ' -- -1 <=> ( +2 (colonne de départ) - 1) For j = 2 to NbCol For i = 3 to 367 ' -- La je trouve bizarre que tu partes de 3 et pas de 2... ' -- pas besoin de sélection, fais directement if sh.cells(i, j).interior.colorIndex = 43 then total = total + sh.cells(i, j) endif next i ' -- pourquoi la ligne 371 ??? sh.cells( 371, j ) = total ' -- RangeCells (j,371) ne veut rien dire next j
Le 16/07/2010 10:31, Alex a écrit :
Re :
En fait mon but est de faire faire la somme de mes cellules de couleur verte par chaque colonne dont voici le code :
Dim j As Integer
Dim NbCol As Integer Sheets("Planning").Select NbCol = Range("B1").CurrentRegion.Columns.Count j = ActiveCell.Columns For j = NbCol To 2 Step -1 Range((Cells(3, j)), (Cells(367, j))).Select For Each C In Selection If C.Interior.ColorIndex = 43 Then total = total + C.Value End If Next C RangeCells (j,371) = total Next j
mais ca ne fonctionne toujours pas !!!
Par avance merci de votre aide Cordialement. Alex
Alex
Bonjour bcar,
Merci pour ta réponse. Pourquoi 371 ? parce que c'est la ou je veux que le résultat se mette. Mon souci est de faire ma selection de plage qui est indispensable pour faire le calcul de couleur . La fonction For Each C fonctionne tres bien si je fais un range("B3:B367).select mais je ne sais pas comment il faut écrire range (j,3:j,367) Si tu peux me donner ce scripte je pense que j'aurai résolu le probleme Cordialement. Alex
Bonjour bcar,
Merci pour ta réponse.
Pourquoi 371 ? parce que c'est la ou je veux que le résultat se mette.
Mon souci est de faire ma selection de plage qui est indispensable
pour faire le calcul de couleur .
La fonction For Each C fonctionne tres bien si je fais un
range("B3:B367).select
mais je ne sais pas comment il faut écrire range (j,3:j,367)
Si tu peux me donner ce scripte je pense que j'aurai résolu le
probleme
Cordialement.
Alex
Merci pour ta réponse. Pourquoi 371 ? parce que c'est la ou je veux que le résultat se mette. Mon souci est de faire ma selection de plage qui est indispensable pour faire le calcul de couleur . La fonction For Each C fonctionne tres bien si je fais un range("B3:B367).select mais je ne sais pas comment il faut écrire range (j,3:j,367) Si tu peux me donner ce scripte je pense que j'aurai résolu le probleme Cordialement. Alex
Sam
Bonjour, J'ai testé ceci, ça fonctionne Remarque : j'ai rajouté +1 à Nbcol car Nbcol est calculé par rapport à la zone à partir de B1
Sub boucle() ' ' boucle Macro ' Macro enregistrée le 16/07/2010 par Michel ' ' Touche de raccourci du clavier: Ctrl+w ' Dim j As Integer Dim NbCol As Integer Sheets("Planning").Select NbCol = Range("B1").CurrentRegion.Columns.Count For j = NbCol + 1 To 2 Step -1 Total = 0 Range(Cells(3, j), Cells(367, j)).Select For Each C In Selection If C.Interior.ColorIndex = 43 Then Total = Total + C.Value End If Next C Cells(371, j).Value = Total Cells(371, j).Interior.ColorIndex = 43 Next j Cells(371, 2).Select End Sub
Cordialement Michel dit "Sam" "Alex" a écrit dans le message de news:
Re :
En fait mon but est de faire faire la somme de mes cellules de couleur verte par chaque colonne dont voici le code :
Dim j As Integer
Dim NbCol As Integer Sheets("Planning").Select NbCol = Range("B1").CurrentRegion.Columns.Count j = ActiveCell.Columns For j = NbCol To 2 Step -1 Range((Cells(3, j)), (Cells(367, j))).Select For Each C In Selection If C.Interior.ColorIndex = 43 Then total = total + C.Value End If Next C RangeCells (j,371) = total Next j
mais ca ne fonctionne toujours pas !!!
Par avance merci de votre aide Cordialement. Alex
Bonjour,
J'ai testé ceci, ça fonctionne
Remarque : j'ai rajouté +1 à Nbcol car Nbcol est calculé par rapport à la
zone à partir de B1
Sub boucle()
'
' boucle Macro
' Macro enregistrée le 16/07/2010 par Michel
'
' Touche de raccourci du clavier: Ctrl+w
'
Dim j As Integer
Dim NbCol As Integer
Sheets("Planning").Select
NbCol = Range("B1").CurrentRegion.Columns.Count
For j = NbCol + 1 To 2 Step -1
Total = 0
Range(Cells(3, j), Cells(367, j)).Select
For Each C In Selection
If C.Interior.ColorIndex = 43 Then
Total = Total + C.Value
End If
Next C
Cells(371, j).Value = Total
Cells(371, j).Interior.ColorIndex = 43
Next j
Cells(371, 2).Select
End Sub
Cordialement
Michel dit "Sam"
"Alex" <alex-m@orange.fr> a écrit dans le message de news:
a0815838-3156-4602-b639-49c1c8bd15fd@e5g2000yqn.googlegroups.com...
Re :
En fait mon but est de faire faire la somme de mes cellules de couleur
verte par chaque colonne dont voici le code :
Dim j As Integer
Dim NbCol As Integer
Sheets("Planning").Select
NbCol = Range("B1").CurrentRegion.Columns.Count
j = ActiveCell.Columns
For j = NbCol To 2 Step -1
Range((Cells(3, j)), (Cells(367, j))).Select
For Each C In Selection
If C.Interior.ColorIndex = 43 Then
total = total + C.Value
End If
Next C
RangeCells (j,371) = total
Next j
Bonjour, J'ai testé ceci, ça fonctionne Remarque : j'ai rajouté +1 à Nbcol car Nbcol est calculé par rapport à la zone à partir de B1
Sub boucle() ' ' boucle Macro ' Macro enregistrée le 16/07/2010 par Michel ' ' Touche de raccourci du clavier: Ctrl+w ' Dim j As Integer Dim NbCol As Integer Sheets("Planning").Select NbCol = Range("B1").CurrentRegion.Columns.Count For j = NbCol + 1 To 2 Step -1 Total = 0 Range(Cells(3, j), Cells(367, j)).Select For Each C In Selection If C.Interior.ColorIndex = 43 Then Total = Total + C.Value End If Next C Cells(371, j).Value = Total Cells(371, j).Interior.ColorIndex = 43 Next j Cells(371, 2).Select End Sub
Cordialement Michel dit "Sam" "Alex" a écrit dans le message de news:
Re :
En fait mon but est de faire faire la somme de mes cellules de couleur verte par chaque colonne dont voici le code :
Dim j As Integer
Dim NbCol As Integer Sheets("Planning").Select NbCol = Range("B1").CurrentRegion.Columns.Count j = ActiveCell.Columns For j = NbCol To 2 Step -1 Range((Cells(3, j)), (Cells(367, j))).Select For Each C In Selection If C.Interior.ColorIndex = 43 Then total = total + C.Value End If Next C RangeCells (j,371) = total Next j
mais ca ne fonctionne toujours pas !!!
Par avance merci de votre aide Cordialement. Alex
Alex
Merci Sam, tu m'as trouvé la solution, par contre j'ai oté le + 1 du for j sinon il effectue les calculent sur une colonne vide.
Merci Sam, tu m'as trouvé la solution, par contre j'ai oté le + 1 du
for j sinon il effectue les calculent sur une colonne vide.
Merci Sam, tu m'as trouvé la solution, par contre j'ai oté le + 1 du for j sinon il effectue les calculent sur une colonne vide.
bcar
La réponse complète est dans mon message précédent. La sélection est inutile. range (j,3:j,367) doit s'écrire range(cells(j,3),cells(j,367))
Le 16/07/2010 14:22, Alex a écrit :
Bonjour bcar,
Merci pour ta réponse. Pourquoi 371 ? parce que c'est la ou je veux que le résultat se mette. Mon souci est de faire ma selection de plage qui est indispensable pour faire le calcul de couleur . La fonction For Each C fonctionne tres bien si je fais un range("B3:B367).select mais je ne sais pas comment il faut écrire range (j,3:j,367) Si tu peux me donner ce scripte je pense que j'aurai résolu le probleme Cordialement. Alex
La réponse complète est dans mon message précédent.
La sélection est inutile.
range (j,3:j,367) doit s'écrire range(cells(j,3),cells(j,367))
Le 16/07/2010 14:22, Alex a écrit :
Bonjour bcar,
Merci pour ta réponse.
Pourquoi 371 ? parce que c'est la ou je veux que le résultat se mette.
Mon souci est de faire ma selection de plage qui est indispensable
pour faire le calcul de couleur .
La fonction For Each C fonctionne tres bien si je fais un
range("B3:B367).select
mais je ne sais pas comment il faut écrire range (j,3:j,367)
Si tu peux me donner ce scripte je pense que j'aurai résolu le
probleme
Cordialement.
Alex
La réponse complète est dans mon message précédent. La sélection est inutile. range (j,3:j,367) doit s'écrire range(cells(j,3),cells(j,367))
Le 16/07/2010 14:22, Alex a écrit :
Bonjour bcar,
Merci pour ta réponse. Pourquoi 371 ? parce que c'est la ou je veux que le résultat se mette. Mon souci est de faire ma selection de plage qui est indispensable pour faire le calcul de couleur . La fonction For Each C fonctionne tres bien si je fais un range("B3:B367).select mais je ne sais pas comment il faut écrire range (j,3:j,367) Si tu peux me donner ce scripte je pense que j'aurai résolu le probleme Cordialement. Alex
Sam
Bonjour, comme l'a précisé Bcar tu peux supprimer la selection de la colonne (gain de temps)
Dim j As Integer Dim Total As Double Dim NbCol As Integer Sheets("Planning").Select NbCol = Range("B1").CurrentRegion.Columns.Count For j = NbCol + 1 To 2 Step -1 Total = 0 For Each C In Range(Cells(3, j), Cells(367, j)) If C.Interior.ColorIndex = 43 Then Total = Total + C.Value End If Next C Cells(371, j).Value = Total Next j
Cells(371, 2).Select 'ça c'est pour vérifier que ça marche End Sub
Cordialement Michel dit "Sam" "Alex" a écrit dans le message de news:
Merci Sam, tu m'as trouvé la solution, par contre j'ai oté le + 1 du for j sinon il effectue les calculent sur une colonne vide.
Bonjour,
comme l'a précisé Bcar
tu peux supprimer la selection de la colonne (gain de temps)
Dim j As Integer
Dim Total As Double
Dim NbCol As Integer
Sheets("Planning").Select
NbCol = Range("B1").CurrentRegion.Columns.Count
For j = NbCol + 1 To 2 Step -1
Total = 0
For Each C In Range(Cells(3, j), Cells(367, j))
If C.Interior.ColorIndex = 43 Then
Total = Total + C.Value
End If
Next C
Cells(371, j).Value = Total
Next j
Cells(371, 2).Select
'ça c'est pour vérifier que ça marche
End Sub
Cordialement
Michel dit "Sam"
"Alex" <alex-m@orange.fr> a écrit dans le message de news:
97d47bd0-1d34-4936-aa40-46fef25fb0a1@u26g2000yqu.googlegroups.com...
Merci Sam, tu m'as trouvé la solution, par contre j'ai oté le + 1 du
for j sinon il effectue les calculent sur une colonne vide.
Bonjour, comme l'a précisé Bcar tu peux supprimer la selection de la colonne (gain de temps)
Dim j As Integer Dim Total As Double Dim NbCol As Integer Sheets("Planning").Select NbCol = Range("B1").CurrentRegion.Columns.Count For j = NbCol + 1 To 2 Step -1 Total = 0 For Each C In Range(Cells(3, j), Cells(367, j)) If C.Interior.ColorIndex = 43 Then Total = Total + C.Value End If Next C Cells(371, j).Value = Total Next j
Cells(371, 2).Select 'ça c'est pour vérifier que ça marche End Sub
Cordialement Michel dit "Sam" "Alex" a écrit dans le message de news:
Merci Sam, tu m'as trouvé la solution, par contre j'ai oté le + 1 du for j sinon il effectue les calculent sur une colonne vide.
Alex
Merci à vous deux pour vos réponses et solutions que j'ai mis en application, et qui me permet de continuer et de finaliser ce projet. Alex
Merci à vous deux pour vos réponses et solutions que j'ai mis en
application, et qui me permet de continuer et de finaliser ce projet.
Alex