funkay91
Messages postés20Date d'inscriptionmercredi 9 novembre 2005StatutMembreDernière intervention22 novembre 2005
-
9 nov. 2005 à 10:31
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
10 nov. 2005 à 20:39
je vous explik mon probleme
j'ai un tableau excel sur lequel je doit faire la somme sur chaque ligne sahant que mon tableau commence en D6 et fini en AD36
mais c'est une somme particulière car je veut ressortir sur les collonnes la somme des A ( que je soustrait à une valeur normal) puis dans celle d'appres la somme des B etc...
Le deuxième paramètre est que certaine ligne sont en couleur et que celle si ne doivent pas avoir la meme soustraction au final
le troisième paramètre est ke je doit prendre en compte que les cellulles de couleur jaune et blanche...
Je sait c'est assez chiant mais si quelqu'un peut m'aider ce serait cool
meme si vous avez que une partie du pbl ( par exemple comment balayé ligne par ligne etc... n'hésitez pas surtout a m'aider
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 9 nov. 2005 à 15:33
Salut
... et finiT en AD36
... la somme des A : C'est quoi ? compter les lettres A dans ces cellules ou sommer les chiffres contenus dans la colonne (avec un seul L) A ?
... après ... : un seul P
... une valeur normalE ... que celleSCi ne doivent pas avoir la meme soustraction au final : Ca veut dire quoi ?
A ma connaissance, le test de la couleur d'une cellule ne peut être fait que dans une macro (peut être un truc du genre If Worksheets("Feuil1").Range("A1").Font.ColorIndex = 3 Then ...), il n'existe pas de fonction toute faite dans l'environnement des cellules.
(Je doiS ... Je veuX ... Je saiS ...)
Vala
Jack, MVP VB, chaint depuis 1959
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
funkay91
Messages postés20Date d'inscriptionmercredi 9 novembre 2005StatutMembreDernière intervention22 novembre 2005 9 nov. 2005 à 16:33
Bon j'ai codé comme un débutant que je suis ma petite macro mias il me reste un problem
deja voila mon code
Sub essaie()
Dim Cellule As Byte
Dim NbA As Integer
Dim NbB As Integer
Dim NbC As Integer
NbA = 0
NbB = 0
NbC = 0
NbN = 0
Dim Valeur As String
Dim Couleur As Integer
Cells(4, 61) = "nombre de A"
Cells(4, 62) = "nombre de B"
Cells(4, 63) = "nombre de N"
For LinIndex = 6 To 37
With Cells(LinIndex, 3)
Couleur = .Interior.ColorIndex
'MsgBox ("couleur de ligne")
'MsgBox ("la couleur de la ligne est" & Couleur)
End With
If Couleur = -4142 Then
For Colindex = 4 To 59
With Cells(LinIndex, Colindex)
Couleur = .Interior.ColorIndex
'MsgBox ("la clouleur de la cellule" & Couleur)
If Couleur = -4142 Then
Valeur = .Value()
'MsgBox (Luc) If Valeur "AA" Or Valeur "A1" Or Valeur = "A-1A" Or Valeur = "A-2A" Then
NbA = NbA + 1
End If
If Valeur "B1" Or Valeur "BB" Or Valeur = "B 1" Then
NbB = NbB + 1
End If
If Valeur "NN" Or Valeur "CC" Then
NbN = NbN + 1
End If
End If
End With
Next Colindex
'calcul en semaine
calculA = 3 - NbA
calculB = 3 - NbB
calculN = 6 - NbN
If calculA = 0 Then
Cells(LinIndex, Colindex + 1) = "Ok"
ElseIf calculA < 0 Then
Cells(LinIndex, Colindex + 1) = "+" & -calculA & " personne(s)"
Else
Cells(LinIndex, Colindex + 1) = "manque " & calculA
End If
NbA = 0
If calculB = 0 Then
Cells(LinIndex, Colindex + 2) = "Ok"
ElseIf calculB < 0 Then
Cells(LinIndex, Colindex + 2) = "+" & -calculB & " personne(s)"
Else
Cells(LinIndex, Colindex + 2) = "manque " & calculB
End If
NbB = 0
If calculN = 0 Then
Cells(LinIndex, Colindex + 3) = "Ok"
ElseIf calculN < 0 Then
Cells(LinIndex, Colindex + 3) = "+" & -calculN & " personne(s)"
Else
Cells(LinIndex, Colindex + 3) = "manque " & calculN
End If
NbN = 0
End If
If Couleur = 33 Then
For Colindex = 4 To 59
With Cells(LinIndex, Colindex)
Couleur = .Interior.ColorIndex
'MsgBox (Couleur & "est la couleur de la cellule")
If Couleur = 33 Then
Valeur = .Value()
'MsgBox (Luc) If Valeur "AA" Or Valeur "A1" Or Valeur = "A-1A" Or Valeur = "A-2A" Then
NbA = NbA + 1
End If
If Valeur "B1" Or Valeur "BB" Then
NbB = NbB + 1
End If
If Valeur "NN" Or Valeur "CC" Then
NbN = NbN + 1
End If
End If
End With
Next Colindex
jour = Cells(LinIndex, 3)
'MsgBox (jour)
If jour = "S" Then
'MsgBox (NbA)
'calcul le samedi
calculA = 5 - NbA
calculB = 3 - NbB
calculN = 6 - NbN
If calculA = 0 Then
Cells(LinIndex, Colindex + 1) = "Ok"
ElseIf calculA < 0 Then
Cells(LinIndex, Colindex + 1) = "+" & -calculA & " personne(s)"
Else
Cells(LinIndex, Colindex + 1) = "manque " & calculA
End If
NbA = 0
If calculB = 0 Then
Cells(LinIndex, Colindex + 2) = "Ok"
ElseIf calculB < 0 Then
Cells(LinIndex, Colindex + 2) = "+" & -calculB & " personne(s)"
Else
Cells(LinIndex, Colindex + 2) = "manque " & calculB
End If
NbB = 0
If calculN = 0 Then
Cells(LinIndex, Colindex + 3) = "Ok"
ElseIf calculN < 0 Then
Cells(LinIndex, Colindex + 3) = "+" & -calculN & " personne(s)"
Else
Cells(LinIndex, Colindex + 3) = "manque " & calculN
End If
NbN = 0
Else
'calcul du dimanche et jour férié
calculA = 3 - NbA
calculB = 3 - NbB
calculN = 6 - NbN
If calculA = 0 Then
Cells(LinIndex, Colindex + 1) = "Ok"
ElseIf calculA < 0 Then
Cells(LinIndex, Colindex + 1) = "+" & -calculA & " personne(s)"
Else
Cells(LinIndex, Colindex + 1) = "manque " & calculA
End If
NbA = 0
If calculB = 0 Then
Cells(LinIndex, Colindex + 2) = "Ok"
ElseIf calculB < 0 Then
Cells(LinIndex, Colindex + 2) = "+" & -calculB & " personne(s)"
Else
Cells(LinIndex, Colindex + 2) = "manque " & calculB
End If
NbB = 0
If calculN = 0 Then
Cells(LinIndex, Colindex + 3) = "Ok"
ElseIf calculN < 0 Then
Cells(LinIndex, Colindex + 3) = "+" & -calculN & " personne(s)"
Else
Cells(LinIndex, Colindex + 3) = "manque " & calculN
End If
NbN = 0
End If
End If
Next LinIndex
'MsgBox ("NBA=" & NbA)
End Sub
Voila ça c'est fait
Ma question est :::::: Comment faire pour au lieu de faire pour avoir juste une détection d'un A dans la cellule au lieu de mettre mes valeurs
funkay91
Messages postés20Date d'inscriptionmercredi 9 novembre 2005StatutMembreDernière intervention22 novembre 2005 9 nov. 2005 à 16:35
ma dernière ligne veut rien dire.....
donc je vais être plus clair je voudrai juste incrémenté mon compteur si je trouve un A parmis d'autre chose dans la cellule
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 10 nov. 2005 à 20:39
Salut
Je confirme : elle ne veut rien dire
Pour analyser les caratcères compris dans une cellule, il faut observer chaque caractère :
Texte = ContenuDeLaCellule
For r = 1 To Len(Texte) If UCase(Mid(Texte, r, 1)) "A" Then NbA NbA + 1
Next r
Il faudra donc faire ceci pour chaque cellule
Le UCase est là pour détecter aussi bien les "a" que les "A"
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)