Somme de variables

emynona1 Messages postés 1 Statut Membre -  
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...

1 réponse

f894009 Messages postés 17414 Date d'inscription   Statut Membre Dernière intervention   1 715
 
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
0