Somme de variables
emynona1
Messages postés
1
Statut
Membre
-
f894009 Messages postés 17414 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17414 Date d'inscription Statut Membre Dernière intervention -
Bonjour !
Je m'adresse à vous pour m'aider à résoudre un problème qui me bloque depuis maintenant plusieurs jours. Je vais essayer d'être le plus précis possible dans mes détails pour que vous puissiez cerner mon souci.
Mon programme agit sur deux pages différentes d'un même classeur. Dans un onglet "1", il apparaît plusieurs entités dans une colonne sur la gauche (B), cela correspondant à des opérations. Dans une ligne en haut (2), des noms sont donnés aléatoirement, ils correspondent à une série d'opérations. Dans ce tableau, les cellules sont colorées en vert ou en rouge selon qu'elles soient réalisées ou non.
https://www.casimages.com/i/130412125726454701.jpg.html
Dans un deuxième onglet "2", un tableau récapitule en ordonnée l'ensemble des opérations possibles (de A à H), et en abscisse apparait une échelle temporelle en semaines.
https://www.casimages.com/i/130412125954434341.jpg.html
Le but de mon programme est le suivant :
-1 : un bouton dans l'onglet "2" vient demander sous forme d'InputBox la semaine qui doit être mise à jour : cela permet de cible la colonne dans laquelle les résultats viendront à être comptabilisés.
-2 : on bascule sur l'onglet "1". Je dois cibler, pour chaque série d'opération, quelle est la dernière opération qui a été effectuée. C'est à dire, pour chaque colonne, cibler l'opération qui précède la première cellule colorée en rouge. A ce stade, je fixe la cellule et je récupère le nom de cette opération qui figure dans la colonne B.
-3 : retour sur l'onglet "2" : je recherche le nom de l'opération concernée, et en fonction de la semaine choisie en entrée dans l'InputBox, je me positionne dans la cellule adéquate et j'ajoute +1
Toutes ces opérations sont effectuées en boucle pour toutes les séries d'opérations figurant dans l'onglet 1, sachant que leur nombre peu être amené à varier...
Voici le contenu du programme que j'ai édité jusqu'à maintenant :
Sub Bouton1_Clic()
Dim resultat As String
Dim operation As String
Dim lifin As String
Dim li As Integer
Dim liverte As Integer
Dim nom7 As String
Dim i As Integer
Dim j As Integer
Dim k As Integer
'recherche de la semaine à comptabiliser
semaine = InputBox("Quelle est la semaine que vous désirez comptabiliser?")
'fixer la colonne semaine
Sheets("2").Select
For i = 1 To 52
If Cells(1, i + 1) = semaine Then
Cells(2, i + 1).Select
i = ActiveCell.Column
Sheets("1").Select
For j = 1 To 255
' recherche dernière cellule verte
lifin = Cells(Rows.Count, j).End(xlUp).Row
liverte = 0
For li = 1 To lifin
'si cellule verte ensuite prendre en compte le nom de l'opération, aller chercher ce nom dans le WIP et ajouter plus 1 dans la colonne semaine voulue
If Cells(li, j).Interior.Color = RGB(0, 255, 0) Then
liverte = li
Cells(liverte - 1, 1).Select
nom7 = Selection.Value
Sheets("2").Select
For k = 2 To 24
If Cells(k, 1) = nom7 Then
Cells(k, i).Select
Cells(k, i) = Cells(k, i) + 1
End If
Next
End If
Next
Next
End If
Next
End Sub
Jusqu'à maintenant cela ne fonctionne pas. Je pense que cela est du à un mauvais ciblage des cellules colorées dans "1". Un grand merci à toute personne qui sera en mesure de m'aider dans ce programme qui me cause bien des soucis...
Je m'adresse à vous pour m'aider à résoudre un problème qui me bloque depuis maintenant plusieurs jours. Je vais essayer d'être le plus précis possible dans mes détails pour que vous puissiez cerner mon souci.
Mon programme agit sur deux pages différentes d'un même classeur. Dans un onglet "1", il apparaît plusieurs entités dans une colonne sur la gauche (B), cela correspondant à des opérations. Dans une ligne en haut (2), des noms sont donnés aléatoirement, ils correspondent à une série d'opérations. Dans ce tableau, les cellules sont colorées en vert ou en rouge selon qu'elles soient réalisées ou non.
https://www.casimages.com/i/130412125726454701.jpg.html
Dans un deuxième onglet "2", un tableau récapitule en ordonnée l'ensemble des opérations possibles (de A à H), et en abscisse apparait une échelle temporelle en semaines.
https://www.casimages.com/i/130412125954434341.jpg.html
Le but de mon programme est le suivant :
-1 : un bouton dans l'onglet "2" vient demander sous forme d'InputBox la semaine qui doit être mise à jour : cela permet de cible la colonne dans laquelle les résultats viendront à être comptabilisés.
-2 : on bascule sur l'onglet "1". Je dois cibler, pour chaque série d'opération, quelle est la dernière opération qui a été effectuée. C'est à dire, pour chaque colonne, cibler l'opération qui précède la première cellule colorée en rouge. A ce stade, je fixe la cellule et je récupère le nom de cette opération qui figure dans la colonne B.
-3 : retour sur l'onglet "2" : je recherche le nom de l'opération concernée, et en fonction de la semaine choisie en entrée dans l'InputBox, je me positionne dans la cellule adéquate et j'ajoute +1
Toutes ces opérations sont effectuées en boucle pour toutes les séries d'opérations figurant dans l'onglet 1, sachant que leur nombre peu être amené à varier...
Voici le contenu du programme que j'ai édité jusqu'à maintenant :
Sub Bouton1_Clic()
Dim resultat As String
Dim operation As String
Dim lifin As String
Dim li As Integer
Dim liverte As Integer
Dim nom7 As String
Dim i As Integer
Dim j As Integer
Dim k As Integer
'recherche de la semaine à comptabiliser
semaine = InputBox("Quelle est la semaine que vous désirez comptabiliser?")
'fixer la colonne semaine
Sheets("2").Select
For i = 1 To 52
If Cells(1, i + 1) = semaine Then
Cells(2, i + 1).Select
i = ActiveCell.Column
Sheets("1").Select
For j = 1 To 255
' recherche dernière cellule verte
lifin = Cells(Rows.Count, j).End(xlUp).Row
liverte = 0
For li = 1 To lifin
'si cellule verte ensuite prendre en compte le nom de l'opération, aller chercher ce nom dans le WIP et ajouter plus 1 dans la colonne semaine voulue
If Cells(li, j).Interior.Color = RGB(0, 255, 0) Then
liverte = li
Cells(liverte - 1, 1).Select
nom7 = Selection.Value
Sheets("2").Select
For k = 2 To 24
If Cells(k, 1) = nom7 Then
Cells(k, i).Select
Cells(k, i) = Cells(k, i) + 1
End If
Next
End If
Next
Next
End If
Next
End Sub
Jusqu'à maintenant cela ne fonctionne pas. Je pense que cela est du à un mauvais ciblage des cellules colorées dans "1". Un grand merci à toute personne qui sera en mesure de m'aider dans ce programme qui me cause bien des soucis...
A voir également:
- Somme de variables
- Somme si couleur - Guide
- Formule somme excel ligne - Guide
- Somme en anglais excel - Guide
- SOMME SI COULEUR ✓ - Forum Excel
- Impossible de créer le fichier de travail. vérifiez la variable d'environnement temp ✓ - Forum Word
1 réponse
Bonjour,
Votre code un peu modifie. Un inputbox renvoi une chaine de caracteres, en ciblant que des entrees chiffres(Type:=1), vous obtenez un test minimum pour etre sur qu'il n'y a pas de lettres. Pour la couleur, assurez-vous que c'est la bonne, dans mes test, j'ai colorie des cellules avec la couleur de votre test.
Bonne suite
Votre code un peu modifie. Un inputbox renvoi une chaine de caracteres, en ciblant que des entrees chiffres(Type:=1), vous obtenez un test minimum pour etre sur qu'il n'y a pas de lettres. Pour la couleur, assurez-vous que c'est la bonne, dans mes test, j'ai colorie des cellules avec la couleur de votre test.
Sub Bouton1_Clic()
Dim resultat As String
Dim operation As String
Dim lifin As Integer
Dim li As Integer
'Dim liverte As Integer
Dim nom7 As String
Dim i As Integer
Dim j As Integer
Dim k As Integer
'recherche de la semaine à comptabiliser
'semaine = InputBox("Quelle est la semaine que vous désirez comptabiliser?")
'Test numerique sur l'entree
saisie:
semaine = Application.InputBox("Quelle est la semaine que vous désirez comptabiliser?", Type:=1)
If semaine < 1 Or semaine > 52 Then
MsgBox "Attention!!!!"
GoTo saisie
End If
For i = 1 To 52
If Sheets("2").Cells(1, i + 1) = semaine Then
For j = 1 To 255
' recherche dernière cellule verte
lifin = Sheets("1").Cells(Rows.Count, j).End(xlUp).Row
For li = 1 To lifin
'si cellule verte ensuite prendre en compte le nom de l'opération,
'aller chercher ce nom dans le WIP et ajouter plus 1 dans la colonne semaine voulue
If Sheets("1").Cells(li, j).Interior.Color = RGB(0, 255, 0) Then
nom7 = Sheets("1").Cells(li - 1, 1)
For k = 2 To 24
If Sheets("2").Cells(k, 1) = nom7 Then
Sheets("2").Cells(k, i) = Sheets("2").Cells(k, i) + 1
End If
Next k
End If
Next li
Next j
End If
Next i
End Sub
Bonne suite