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

  • Initiateur de la discussion Initiateur de la discussion luvill
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

L

luvill

Guest
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
 
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
 
Re : Macro : lister la valeur de toutes les cellules C2 d'un classeur

Bonjour, luvill, Robert 😀, 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 🙂
 
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 🙄 :

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 🙂
 
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
 
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
 
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 =)
 
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
 
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.
 
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
 
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 !
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
14
Affichages
202
Réponses
4
Affichages
244
Retour