Somme de variables
emynona1
Messages postés
1
Statut
Membre
-
f894009 Messages postés 17417 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17417 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...
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.
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