Macro : lister la valeur de toutes les cellules C2 d'un classeur

luvill

XLDnaute Nouveau
Bonjour,

Je cherche une macro qui permet de lister toutes les valeur contenu dans les cellules C2 de mon classeurs (donc les valeurs des cellules C2 de toutes les feuilles).

Merci beaucoup,

luvill
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Macro : lister la valeur de toutes les cellules C2 d'un classeur

Bonjour Luvill, bonjour le forum,

Peut-être comme ça :
Code:
Sub Macro1()
Dim O As Object 'déclare la variable O (Onglets)
Dim M As String 'déclare la variaboe m (Message)

For Each O In Sheets 'boucle sur tous les onglets du classeur
    'définit le message M
    M = M & O.Name & " : " & O.Range("C2").Value & Chr(13)
Next O 'prochain onglet du classeur
MsgBox M 'affiche le message M
End Sub
 

DoubleZero

XLDnaute Barbatruc
Re : Macro : lister la valeur de toutes les cellules C2 d'un classeur

Bonjour, luvill, Robert :D, le Forum,

... Ou comme ça, après avoir créé un onglet nommé "Résultat" :

Code:
Option Explicit
Sub Cellules_c2_lister()
    Dim o As Worksheet
    For Each o In Worksheets
        If o.Name <> "Résultat" Then
            With Sheets("Résultat")
                .Range("a" & Rows.Count).End(xlUp)(2) = o.Range("c2")
                .Range("b" & Rows.Count).End(xlUp)(2) = o.Name
            End With
        End If
    Next
End Sub

A bientôt :)
 

DoubleZero

XLDnaute Barbatruc
Re : Macro : lister la valeur de toutes les cellules C2 d'un classeur

Re-bonjour,

... Ou bien comme ça, après avoir créé un onglet nommé "Résultat"... dont les colonnes a et b seront préalablement effacées :rolleyes: :

Code:
Option Explicit
Sub Cellules_c2()
    Dim o As Worksheet
    With Sheets("Résultat")
        .Columns("a:b").Clear
        .[a1] = "Valeur"
        .[b1] = "Onglet"
    End With
    For Each o In Worksheets
        If o.Name <> "Résultat" Then
            With Sheets("Résultat")
                .Range("a" & Rows.Count).End(xlUp)(2) = o.Range("c2")
                .Range("b" & Rows.Count).End(xlUp)(2) = o.Name
            End With
        End If
    Next
End Sub

A bientôt :)
 

luvill

XLDnaute Nouveau
Re : Macro : lister la valeur de toutes les cellules C2 d'un classeur

Super. C'est pile ce dont j'avais besoins. J'ai réussi à adapter la macro et en avoir l'utilité nécessaire.

Vraiment MERCI ! :)

Pouvez-vous m'aider sur un autre problème ? J'ai une macro afin de lister les nom de tous les onglets de mon classeur dans une colonne ;

Sub Onglets()

Dim i As Integer

For i = 2 To Sheets.Count
Cells(12 + i, 2) = Sheets(i).Name
Next i

End Sub

La macro est effective à partir de la feuille numéro 2. Ma question est la suivante : comment faire en sorte pour stopper la macro à partir de la feuille "Calcul" ?

Merci
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Macro : lister la valeur de toutes les cellules C2 d'un classeur

Bonsoir Luvill, Double, bonsoir le forum,

Essaie comme ça :
Code:
Sub Onglets()
Dim i As Integer

For i = 2 To Sheets.Count
    Cells(12 + i, 2) = Sheets(i).Name
    If Sheets(i).Name = "Calcul" Then Exit For
Next i
End Sub
 

luvill

XLDnaute Nouveau
Re : Macro : lister la valeur de toutes les cellules C2 d'un classeur

Cela fonctionne parfaitement =)

Dernière question à propos de cette macro ;

Sub SCORE3() 'Gouvernance'

Dim f As Long
Sheets("Bilan des analyses").Range("SCORE3").ClearContents
nbVal = Sheets.Count - 1
For f = 1 To nbVal
Sheets("Bilan des analyses").Range("SCORE3").Cells(f, 1).Value = Sheets(f).Range("F96").Value
Next f

End Sub 

Comment faire pour qu'elle se mettent à jour dès qu'une valeur est saisie dans une des cellule F96 du classeur ?
Si ce n'est pas possible que cette macro se mettent à jour dès que l'utilisateur se rend sur l'onglet "Bilan des analyses" ?

Un grand merci =)
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Macro : lister la valeur de toutes les cellules C2 d'un classeur

Bonjour le fil, bonjour le forum,

Code à mettre dans le composant ThisWorkbook de ton classeur dans l'Éditeur Visual Basic (VBE) :
Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim f As Long 'je pense que Byte serait suffisant sauf si tu as plus de 255 onglets dans le classeur

If Sh.Target.Address <> "$F$96" Then Exit Sub 'si le changement a lieu ailleurs qu'en F96, sort de la procédure
Sheets("Bilan des analyses").Range("SCORE3").ClearContents 'efface la plage nommée "SCORE3" de l'onglet "Bilan des analyses"
For f = 1 To Sheets.Count - 1 'boucle du premier à l'avant dernier onglet du classeur
    'récupère la valeur de la cellue F96 de chaque onglet dans la plage nommée "SCORE3" de l'onglet "Bilan des analyses"
    Sheets("Bilan des analyses").Range("SCORE3").Cells(f, 1).Value = Sheets(f).Range("F96").Value
Next f 'prochain onglet de la plage
End Sub
 

luvill

XLDnaute Nouveau
Re : Macro : lister la valeur de toutes les cellules C2 d'un classeur

Merci Robert, des macros comme la précédente j'en ai 5.

Une pour SCORE1 qui correspond aux valeurs des cellules F24
Une pour SCORE2 ==>F58
Une pour SCORE 3 ==> F96
Une pour SCORE 4 ==> F115
Une pour SCORE 5 ==> F79

Donc ce code, je le refait pour chaque macro ? (SCORE1, SCORE2...) ? Comment faire pour les faire à la suite ?

Merci.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Macro : lister la valeur de toutes les cellules C2 d'un classeur

Bonsoir le fil, bonsoir le forum,

S'arrêtera-t-il un jour le bougre ?!
Peut-être comme ça (non testé) :
Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim f As Long 'je pense que Byte serait suffisant sauf si tu as plus de 255 onglets dans le classeur
Dim PL As Range 'déclare la variable PL (PLage)

Select Case Target.Address 'agit en fonction de l'adresse de la cellule modifiée
    Case "$F$24" 'cas F24
        Set PL = Sheets("Bilan des analyses").Range("SCORE1") 'définit la plage PL
    Case "$F$58" 'cas F58
        Set PL = Sheets("Bilan des analyses").Range("SCORE2") 'définit la plage PL
    Case "$F$96" 'cas F96
        Set PL = Sheets("Bilan des analyses").Range("SCORE3") 'définit la plage PL
    Case "$F$115" 'cas F115
        Set PL = Sheets("Bilan des analyses").Range("SCORE4") 'définit la plage PL
    Case "$F$79" 'cas F79
        Set PL = Sheets("Bilan des analyses").Range("SCORE5") 'définit la plage PL
    Case Else 'pour tous les autre cas
        Exit Sub 'sort de la procédure
End Select
PL.ClearContents 'efface la plage PL
For f = 1 To Sheets.Count - 1 'boucle du premier à l'avant dernier onglet du classeur
    'récupère la valeur de la cellue ayant la même adresse que la cellule modifiée de chaque onglet dans la plage nommée PL
    PL.Cells(f, 1).Value = Sheets(f).Range(Target.Address).Value
Next f 'prochain onglet de la plage
End Sub
 

luvill

XLDnaute Nouveau
Re : Macro : lister la valeur de toutes les cellules C2 d'un classeur

Merci beaucoup :)

Tout marche parfaitement ! J'avais mis ce projet un peu de côté ces derniers temps. J'ai commencé à re-travailler sur ce fichier cette semaine. Par conséquent certaines choses ont changés.

En effet, les valeurs qui se trouvent dans les cellules F24, F58, F96, F115 et F79 ne sont plus saisies à la main, mais se calcul automatiquement (Il s'agit d'une simple sommes).
Or quand la valeur de la somme change dans ces cellules la macro ne reprend pas la valeur. Elle garde la valeur du premier calcul de la somme.

Donc en gros, comment faire pour que cette macro s'exécute dès que la valeur de ces cellules change ? (et non plus quand quelque chose est tapé dans ces cellules).

Un très grand merci d'avance !
 

Discussions similaires

Statistiques des forums

Discussions
312 194
Messages
2 086 066
Membres
103 110
dernier inscrit
Privé