somme de cells(lig,col).value + cells(lig,col-1).value

microclic

XLDnaute Nouveau
Bonjour à tous, je cale un peu sur une macro que j'ai écrite comme suit :
Sub test()
Dim lig As Integer, col As Integer
For lig = 2 To 200
For col = 4 To 56
If Cells(lig, col).Value + Cells(lig, (col - 1)).Value >= 70 Then
MsgBox "Attention, Cycle de 70 heures dépassé à la cellule " & Cells(lig, col).Address

End If
Next col
Next lig

End Sub

Le probleme est qu'arrivé à la ligne if, j'ai un message d'erreur incompatibilité de type.
1 : est ce que ma formule est bonne avec le +
2. dois je mettre en integer sachant que les valeur de mes cellulles sont en décimale.

Merci pour votre aide je dois rendre ça pour cet après midi
 

James007

XLDnaute Barbatruc
Re : somme de cells(lig,col).value + cells(lig,col-1).value

Bonjour,

Ta macro est bien écrite ...
La dimension Integer convient pour des lignes et des colonnes ...
Ta formule avec le + est également correcte ...
Le problème vient sans doute du fait que ton total de 70 sont des ... heures ...
Il te faut un format approprié dans ta feuille ...

A +
 

Gourou AWK

XLDnaute Nouveau
Re : somme de cells(lig,col).value + cells(lig,col-1).value

Bonjour,

Est-ce que tes cellules contiennent toutes de nombres, ou certaines sont-elles vides
Pour s'en assurer is vaut mieux préfixer ton calcul par :
Code:
If IsNumeric(Cells(lig, col).Value) And IsNumeric(Cells(lig, (col - 1)).Value) Then
    If CInt(Cells(lig, col).Value) + CInt(Cells(lig, (col - 1)).Value) >= 70 Then
 

bond

XLDnaute Occasionnel
Re : somme de cells(lig,col).value + cells(lig,col-1).value

Ton code est Ok, test concluant chez moi.
Formule Ok, et elle n'a pas d'impact sur les variables définie.

Bien que dans tes 2 boucles les variables Integer conviennent, des Long seraient plus appropriées si les plages devaient augmenter...

Vérifie peut être que les valeurs sont compatibles avec l'addition : éviter toute forme de texte...
 

Gorfael

XLDnaute Barbatruc
Re : somme de cells(lig,col).value + cells(lig,col-1).value

Salut microclic et le forum
Déjà, mets des balises de codes (# en mode avancé)
Code:
Sub test()
Dim Lig As Long, Col As Integer
For Lig = 2 To 200
    For Col = 4 To 56
        If Cells(Lig, Col) + Cells(Lig, (Col - 1)) >= 70 Then
            MsgBox "Attention, Cycle de 70 heures dépassé à la cellule " & Cells(Lig, Col).Address(0,0)
        End If
    Next Col
Next Lig
End Sub
Seuls changement par rapport à ta macro :
- Les variables commencent par une majuscule => avec la déclaration obligatoire, ça me permet d'éviter des fautes de frappe.
- Lig est déclarée en Long : par principe, toutes mes variables sont déclarées pour pouvoir recevoir la valeur maximale de leur donnée, sans déclenchées d'erreur.
- L'indentation : me permet de me situer dans les boucles, tests, etc...
- (0,0) derrière address permet d'avoir l'adressage relatif, plus facile à lire.

Quand je la lance : pas d'erreur, même si C3:F4 ne contient que du texte (j'ai les messages), ou que des nombres.
Par contre, la mixité texte/nombre me déclenche une erreur d'incompatibilité de types : je me demande bien pourquoi ;) ?

Ta boucle colonne commence bien en C (4-1) ?

Question 1 : oui, l'addition convient
Question 2.
dois je mettre en integer sachant que les valeur de mes cellulles sont en décimale.
Mettre quoi en integer ?
A+
 

ROGER2327

XLDnaute Barbatruc
Re : somme de cells(lig,col).value + cells(lig,col-1).value

Bonjour à tous
(…)
Quand je la lance : pas d'erreur, même si C3:F4 ne contient que du texte (j'ai les messages), ou que des nombres.
Par contre, la mixité texte/nombre me déclenche une erreur d'incompatibilité de types : je me demande bien pourquoi
(…)
+ est l'opérateur d'addition lorsque les termes de la somme sont des nombres ;
+ est l'opérateur de concaténation lorsque les termes sont des textes ;
+ est l'opérateur de rien du tout lorsque les termes sont n'importe quoi.

Personnellement, et en l'absence regrettable de support, je tenterais volontiers quelque chose de ce genre :
Code:
Sub test()
Dim lig As Integer, col As Integer
  For lig = 2 To 200
    For col = 4 To 56
      If IsNumeric(Cells(lig, col)) And IsNumeric(Cells(lig, col - 1)) Then
        If Cells(lig, col).Value + Cells(lig, (col - 1)).Value >= 70 Then
          MsgBox "Attention, Cycle de 70 heures dépassé à la cellule " & Cells(lig, col).Address
        End If
      End If
    Next col
  Next lig
End Sub

ROGER2327
#4767


Mardi 17 Sable 138 (Saint Moyen, français, SQ)
27 Frimaire An CCXIX
2010-W50-5T09:48:53Z
 
Dernière édition:

microclic

XLDnaute Nouveau
Re : somme de cells(lig,col).value + cells(lig,col-1).value

merci à vous tous pour vos réponses plus que rapide. En fait voici ce que je veux faire :
j'ai un tableau avec dans ma colonne C la liste de mes employés
de la colonne D à BD j'ai 53 semaines (la ligne 1 étant réservé aux en-têtes).
je dois mettre une alerte si par exemple un employé cumule plus de 70 heures de travail sur 2 semaines consécutives.
ensuite j'ai d'autres conditions à placer dans ces mêmes cellules mais je verrai plus tard.
donc si en D2 et E2 le 1er salarié fait plus de 70 heures alors alertes. et ce que j'aurais aimé faire c'est que même si on se trouve sur une autre feuille, l'alerte s'affiche.
Oui je suis dur avec vous.
Merci
 

microclic

XLDnaute Nouveau
Re : somme de cells(lig,col).value + cells(lig,col-1).value

Roger, Merci ta formule à l'air de fonctionner, j'aimerais savoir comment faire pour que même si je me trouve sur une autre feuille, et bien que cette macro s'execute quand même (en fait je préfere faire un private sub sheetchange) merci.
 

Gorfael

XLDnaute Barbatruc
Re : somme de cells(lig,col).value + cells(lig,col-1).value

Salut microclic et le forum
j'aimerais savoir comment faire pour que même si je me trouve sur une autre feuille
Je comprends pas : Worksheet_Change : se lance quand on modifie (manuellement ou par macro) la feuille concernée. Mais on a rarement un changement du résultat d'une somme de cellule, si on ne change pas la valeur des cellules ;). Et comme la macro est liée à Worksheet_Change, on peu supposer que les valeurs testées appartiennent à des cellules sans formule. Si ce n'est pas le cas, que, par exemple les valeurs sont le résultat de formules contenant des références à des cellules hors de la feuille, il faut s'occuper du déclenchement de la macro.

Mais sans données, difficile d'aider.
A+
 

Discussions similaires

Statistiques des forums

Discussions
312 240
Messages
2 086 517
Membres
103 239
dernier inscrit
wari