Selection de données dans la même colonne de plusieurs feuilles

Fermé
tchics Messages postés 6 Date d'inscription dimanche 27 janvier 2013 Statut Membre Dernière intervention 5 février 2013 - 28 janv. 2013 à 12:14
tchics Messages postés 6 Date d'inscription dimanche 27 janvier 2013 Statut Membre Dernière intervention 5 février 2013 - 5 févr. 2013 à 13:12
Bonjour,

Je cherche à pouvoir faire un récap sur une feuille appelée "plan d'action" de mon classeur.
La macro aurait pour but de sélectionner dans les colonnes M (à partir de M9) de l'ensemble de mes feuilles, les cellules non vides et de les envoyer dans un tableau nommé TREcap sur ma feuille plan d'action. Le top serait de pouvoir y associer les cellules en N et O sur les cellules en M sélectionnées par la macro. J'espère être assez clair.

PS : Mon nombre de feuille n'est pas fixé
Ps2 : Voici le code actuel mais qui ne fonctionne que pour M9 de mes feuilles

Sub Plan_action()

Dim nbVal As Long
Dim f As Long
  Sheets("Plan d'action").Range("TREcap").ClearContents
  nbVal = Sheets.Count - 1
  For f = 1 To nbVal
     Sheets("Plan d'action").Range("TREcap").Cells(f, 1).Value = Sheets(f).Range("M9").Value
   Next f
End Sub


Merci de votre aide ^^


2 réponses

Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
28 janv. 2013 à 13:34
Bonjour tchics,

Quelque chose comme ceci ?

Option Explicit

Public Sub Synthese()
    Dim i As Long, j As Long, NbFeuilles As Long
    Dim PL As Long, DL As Long
    Dim Valeurs() As String, iValeurs As Long
    '
    PL = 9: iValeurs = 0
    ReDim Valeurs(iValeurs)
    NbFeuilles = ActiveWorkbook.Worksheets.Count
    For i = 1 To NbFeuilles
        If (ActiveWorkbook.Worksheets(i).Name <> "plan d'action") Then
            ' Feuille par feuille
            ActiveWorkbook.Worksheets(i).Select
            ' récupérer la dernière ligne non-vide
            DL = Range("C" & Rows.Count).End(xlUp).Row
            ' récupérer la valeur des cellules
            For j = PL To DL
                iValeurs = (iValeurs + 1)
                ReDim Preserve Valeurs(iValeurs)
                Valeurs(iValeurs) = Cells(j, 13).Value
            Next j
            MsgBox ".. " & ActiveWorkbook.Worksheets(i).Name & vbCrLf & _
                   "DL : " & DL, vbInformation, "tatata"
        End If
    Next
    ' coller
    ActiveWorkbook.Worksheets("plan d'action").Select
    For i = 1 To iValeurs
        Cells(i, 13).Value = Valeurs(i)
    Next i
End Sub
0
tchics Messages postés 6 Date d'inscription dimanche 27 janvier 2013 Statut Membre Dernière intervention 5 février 2013
5 févr. 2013 à 13:12
Merci Heliotte pour ta réponse,

On s'en approche mais il reste quelques améliorations :

1- Seuls les valeurs en M sont reportés, j'aimerais y associer N et O

2- Si la cellule en M est vide j'aimerais qu'il ne reporte pas (peut etre faut il tout simplement effacer une fois le report fait les lignes vides )

Est ce possible ??
0