Bonjour, quelqu'un peut il me dire pourquoi ce code ne marche pas, mais ne génère pas d'erreur tout de même ?
Merci d'avance.Code:
1
2
3
4
5
6 lig = 16 For Each c In .Range("D16:D20" ) c = c + .Range("E" & lig) lig = lig + 1 Next c
Version imprimable
Bonjour, quelqu'un peut il me dire pourquoi ce code ne marche pas, mais ne génère pas d'erreur tout de même ?
Merci d'avance.Code:
1
2
3
4
5
6 lig = 16 For Each c In .Range("D16:D20" ) c = c + .Range("E" & lig) lig = lig + 1 Next c
Parce que tu ne travaille pas sur les valeurs..
Essaie caCode:
1
2
3
4
5 lig = 16 For Each c In .Range("D16:D20" ) c.value = c.value + .Range("E" & lig).value lig = lig + 1 Next c
J'ai rajouté et ça ne change rien (je crois que si on ne met rien, Value est implicite)
Mets le code complet stp.
Et merci !Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 Private Sub Workbook_Open() ' A l'ouverture du classeur Sheets("accueil").Select ' Fermeture automatique en cas d'inactivité Temps = Now + TimeValue("02:00:00") Application.OnTime Temps, "FermerClasseur" With Sheets("accueil") 'Le mois actuel n'est plus le même que le mois du plan de charge If Month(.Range("E15")) <> Month(Now()) Then response = MsgBox("Les dates du PDC ne semblent pas êtres à jour, souhaitez vous y remédier ?", vbExclamation + vbYesNo, "Probleme de date :") If response = 6 Then 'l'utilisateur a choisi Oui. lig = 16 ligFin = 15 While (.Range("E" & ligFin).Interior.ColorIndex <> xlColorIndexNone) ligFin = ligFin + 1 Wend MsgBox (ligFin) For Each c In .Range("D16:D" & ligFin - 1) c = c.Value + .Range("E" & lig).Value lig = lig + 1 Next c End If End If End With End Sub
Re,
J'ai modifié comme suit et cela fonctionne chez moi la somme de range de cette manière
Code:
1
2
3
4
5
6
7 Dim C As Variant Dim lig As Integer lig = 16 For Each C In ActiveSheet.Range("D16:D20") C.Value = C.Value + ActiveSheet.Range("E" & lig).Value lig = lig + 1 Next C
bonjour dans ton code:c est un range, il faut lui donner une valeur, doncCode:c = c.Value + .Range("E" & lig).Value
donc au lieu de c = etc...Code:c.value = c.Value + .Range("E" & lig).Value
met c.value = etc...
Roh quel imbécile, merci beaucoup ! :D
bonjour,
rebondissant sur le problème posé, quelqu'un peut-il me dire pourquoi ce code dans lequel j'ai :
- supprimer la variable lig
- remplacé lig par un offset
fonctionne sans préciser "c.value" (rouge)
et pourquoi il ne fonctionne pas si je met "activecell" en lieu et place de c (bleu)
cordialement.Code:
1
2
3
4
5
6
7 Sub essai() Dim c As Object For Each c In Range("D16:D20") c = c.Value + c.Offset(0, 1).Value Next End Sub
ChatLut,
Le code fonctionne mais pas comme tu penses.
Avec For each tu selectionnes pas de cellules tu les scan d'une maniere
Donc si ta cellule voisine a celle selectionné est vide tu n'aura pas d'effets.
Mais selectionne par exemple D16 : A tes valeurs tu vas ajouter à chacune la valeur en E16.
donc :
D16 = D16 + E16
D17= D17 +E16
...
Etc.
bonsoir,
Est-ce en raison du "scan" que, comme je l'ai remarqué dans d'autres discussion, tu déclares c de type variant plutôt que object.
cordialement,