création de variable automatique

laurent999

XLDnaute Occasionnel
bonsoir,

J'ai un fichier avec plusieurs feuilles.
Je dois boucler sur toutes les feuilles et récupérer tous les résultat de la case B2 par exemple.
je voudrais que le resultat de la feuille 1 soit r, le resultat de la feuille 2 soit r+1 donc r1, etc...,r2, r3....

exemple on aurait:
for each Feuille in ActiveWorkbook.Sheets
r= range("b2").value
si r existe créer r1=range("b2").value
next Feuille

Merci d'avance,

Laurent.
 

Staple1600

XLDnaute Barbatruc
Re : création de variable automatique

Bonsoir


Si j'ai bien compris

Voici un moyen de faire la somme de toutes les cellules B2 d'un classeur

Code:
Sub test()
Dim s As Worksheet, i As Long, t()
i = 0
For Each s In ActiveWorkbook.Worksheets
i = i + 1
ReDim Preserve t(1 To i)
t(i) = s.Name & "!R2C2"
Next s
Sheets(1).Range("A1").Consolidate t, xlSum
End Sub
 

Fred0o

XLDnaute Barbatruc
Re : création de variable automatique

Bonsoir Laurent,

Pourquoi n'utilises-tu pas tout simplement une tableau ? (Array)

Code:
[COLOR=blue]Dim r(ActiveWorkbook.Sheets.Count)[/COLOR]
[COLOR=blue]i = 0[/COLOR]
for each Feuille in ActiveWorkbook.Sheets
[COLOR=blue]   i = i + 1 [/COLOR]
    r[COLOR=blue](i)[/COLOR] = .range("b2").value
next Feuille

La taille de la variable tableau r s'adapte au nombre de feuilles présentes dans ton classeur.

A+
 

laurent999

XLDnaute Occasionnel
Re : création de variable automatique

Merci pour vos réponses,

En fait j'ai déjà créé une macro et dans cette macro j'aimerais remplacer les lignes.

ou j'ai noté 'ici dans le code.

pour améliorer le code au cas ou j'y ajouterais des feuilles supplèmentaires.

Merci,

Laurent
 

Pièces jointes

  • test1.zip
    14 KB · Affichages: 27
  • test1.zip
    14 KB · Affichages: 30
  • test1.zip
    14 KB · Affichages: 29

ROGER2327

XLDnaute Barbatruc
Re : création de variable automatique

Bonjour à tous
Une proposition de modification du code existant :
Code:
[B][COLOR="DarkSlateGray"]Sub test()
Dim Vcherchée As String, i As Long, result As Byte, a As Object
   Sheets("Recap").Range("A250").Select
   For i = 249 To 1 Step -1
      If ActiveCell.Value <> "" Then
         Vcherchée = ActiveCell.Value
         result = 0
         For s = 1 To 2
            Set a = Sheets("Semaine " & Format(s, "00")).Range("D1:D100").Find(Vcherchée)
            If Not a Is Nothing Then result = result + a.Offset(0, 13).Value
         Next s
         ActiveCell.Offset(0, 1).Value = result
      End If
      ActiveCell.Offset(-1, 0).Select
   Next i
End Sub[/COLOR][/B]
ROGER2327
#2713
 

Pyrof

XLDnaute Occasionnel
Re : création de variable automatique

Bonjour,

Voila une macro :

Code:
Sub pyrof()
'-----------------------------------------------------------
'           lecture et calcul des données
'-----------------------------------------------------------
Dim tab_temps
Set tab_temps = CreateObject("scripting.dictionary")
For Each tmp In ActiveWorkbook.Sheets
    feuille = tmp.Name
    If InStr(UCase(Trim(feuille)), "SEMAINE") = 1 Then
        l = 12
        While Sheets(feuille).Cells(l, 4) <> ""
            cle = UCase(Trim(Sheets(feuille).Cells(l, 4)))
            If tab_temps.exists(cle) = False Then tab_temps(cle) = 0
            tab_temps(cle) = tab_temps(cle) + Sheets(feuille).Cells(l, 17)
            l = l + 1
        Wend
    End If
Next
'-----------------------------------------------------------
'           ectriture résultat
'-----------------------------------------------------------
Sheets("Recap").Select
Range(Cells(2, 1), Cells(1000, 2)).ClearContents
l = 1
For Each cle In tab_temps
    l = l + 1
    Cells(l, 1) = cle
    Cells(l, 2) = tab_temps(cle)
Next
End Sub
 

Discussions similaires

Réponses
7
Affichages
334

Membres actuellement en ligne

Statistiques des forums

Discussions
312 329
Messages
2 087 335
Membres
103 520
dernier inscrit
Azise