Faire varier Des plages de cellules en VBA

  • Initiateur de la discussion Eliane
  • Date de début
E

Eliane

Guest
'Bonjour

'J'aimerai faire varier ce qui est écrit après le mot Range ci-dessous :

For Each cel In Sheets(1).Range('A56:J79')

'Quelle est la syntaxe à utiliser ?

'J'ai tenté la syntaxe ci-dessous mais le résultat n'est pas bon
For Each cel In Sheets(1).Cells(1, 56).Cells(10, 79)

'Quelqu'un pourrait-il me donner la bonne syntaxe

'D'avance merci

'Eliane
 
E

Eliane

Guest
KO:Faire varier Des plages de cellules en VBA

'Bonjour PierreJean et le Forum

'J'ai donc essayé ta sympathique proposition mais j'obtiens 'erreur d'execution '1004': ' quand j'utilise ta syntaxe avec les quelques lignes ci-dessous :

Sub somme()
For n = 4 To 4 + 32
total = 0
prenom = Sheets('Planning').Cells(3, n)

'la ligne qui suit produit l'erreur 1004 : 'erreur définie par l'application ou par l'objet'
For Each cel In Sheets(1).Range(Cells(1, 56), Cells(10, 79))

If cel = prenom Then total = total + cel.Offset(0, -1)
Next cel
Sheets('Planning').Cells(5, n) = total
Next n
End Sub

'Qu'elle erreur de Débutante ai-je fais ?

'D'avance merci

'Eliane
 

pierrejean

XLDnaute Barbatruc
Re:KO:Faire varier Des plages de cellules en VBA

bonjour Eliane

j'ais testé ta macro avec pour seule modif feuil1 et feuil2 en lieu et place de planning et elle tourne !!!

par contre je constate que tu fais varier les lignes meme quand tu ecris la somme ce qui m'etonne un peu

peux-tu elaguer ton fichier et le poster ?

on jugera mieux sur piece !!
 

Dan

XLDnaute Barbatruc
Re:KO:Faire varier Des plages de cellules en VBA

Bonjour Eliane,

Deux ou trois conseils :
1. Ne pas utiliser de noms tels que 'SOMME', 'TOTAL' qui sont aussi parfois utilisés dans les formules Excel.
2. Déclarer tes variables

Je pense que ton pb peut venir de la feuille qui est n'est pas nommée et activée. Dans ta macro, on trouve :
Code:
sheets(1).Range(Cells(1, 56), Cells(10, 79))
que tu pourrais remplacer par
Code:
Worksheets('Feuil1').Range(Cells(1, 56), Cells(10, 79))

Essaie ceci :
Code:
Sub som()
Dim n As Variant
Dim Tot As Double
Dim cel As Range
For n = 4 To 4 + 32
Tot = 0
prenom = Sheets('Planning').Cells(3, n)
Worksheets('feuil1').Activate
For Each cel In Worksheets('Feuil1').Range(Cells(1, 56), Cells(10, 79))
If cel = prenom Then Tot = Tot + cel.Offset(0, -1)
Next cel
Sheets('Planning').Cells(5, n) = Tot
Next n
End Sub

Si pb n'hésite pas.

;)

Message édité par: Dan, à: 05/03/2006 16:48
 

Discussions similaires

Statistiques des forums

Discussions
312 339
Messages
2 087 410
Membres
103 541
dernier inscrit
Sebast'o