XL 2010 VBA lister des valeurs des onglets dans un seul

niiiiiiiiiico

XLDnaute Occasionnel
Bonjour,

Je cherche à lister toutes les valeurs comprises dans les colonnes C de 4 onglets dans un seul onglet (onglet recap). Ces valeurs sont toutes dans la colonne C mais le nombre peut varier. De plus il peut y avoir des cellules vides. Dans l'onglet recap, à côté de la valeur récupérée, je souhaite indiquer le nom de l'onglet de base.

En PJ le fichier (dur à expliquer mais le fichier est très simple :D)

Je n'y connais absolument rien en VBA, je ne sais pas du tout comment écrire la macro

Merci pour votre aide
 

Pièces jointes

  • test v1.xlsx
    10.4 KB · Affichages: 50

niiiiiiiiiico

XLDnaute Occasionnel
Bonjour Bougla,

Merci beaucoup !!

J'ai quelques questions. Imaginons, j'ai un ou plusieurs onglets dans ce fichier, mais je souhaite que la macro aille choper les infos que dans les 4 onglets cités (toto, tata, tonton, tutu) comment cela doit il être déclaré ?

Par ailleurs la macro colle les valeurs à partir de A2, si je souhaite que ça soit à partir de B4 par exemple, comment là aussi le déclarer ?




Sub ListElementsColonneC()
Dim Ws As Worksheet, Ws1 As Worksheet
Dim l As Long
Dim Derlig As Long, Derlig2 As Long
Dim Dico As Object
Dim Tbl As Variant

If MsgBox("Souhaitez-vous réaliser le listing ?", _
vbQuestion + vbYesNo) = vbNo Then Exit Sub

Application.ScreenUpdating = False

Set Dico = CreateObject("Scripting.Dictionary")
Set Ws1 = ThisWorkbook.Sheets("récap")
Ws1.Cells.Clear

For Each Ws In ThisWorkbook.Sheets
If Ws.Name <> "récap" Then
Derlig = Ws.Range("C65536").End(xlUp).Row
Tbl = Ws.Range("C1:C" & Derlig).Value
For l = LBound(Tbl) To UBound(Tbl)
If Not Tbl(l, 1) = "" And Not Dico.exists(Tbl(l, 1)) Then Dico(Tbl(l, 1)) = Ws.Name
Next l
End If
Next Ws

Derlig2 = Ws1.Range("A65536").End(xlUp).Row + 1
Ws1.Range("A" & Derlig2).Resize(Dico.Count) = Application.Transpose(Dico.keys)
Ws1.Range("B" & Derlig2).Resize(Dico.Count) = Application.Transpose(Dico.items)

Set Dico = Nothing
Set Ws1 = Nothing

Application.ScreenUpdating = True

End Sub


Merci beaucoup !!!
 

Bougla972

XLDnaute Occasionnel
Niiiico,

Comme ceci:
VB:
Sub ListElementsColonneC()
Dim Ws As Worksheet, Ws1 As Worksheet
Dim l As Long
Dim Derlig As Long, Derlig2 As Long
Dim Dico As Object
Dim Tbl As Variant

If MsgBox("Souhaitez-vous réaliser le listing ?", _
vbQuestion + vbYesNo) = vbNo Then Exit Sub

Application.ScreenUpdating = False

Set Dico = CreateObject("Scripting.Dictionary")
Set Ws1 = ThisWorkbook.Sheets("récap")
Ws1.Cells.Clear

For Each Ws In ThisWorkbook.Sheets
    If Ws.Name <> "récap" Then
        If Ws.Name = "toto" Or Ws.Name = "tata" _
        Or Ws.Name = "tonton" Or Ws.Name = "tutu" Then
            Derlig = Ws.Range("C65536").End(xlUp).Row
            Tbl = Ws.Range("C1:C" & Derlig).Value
            For l = LBound(Tbl) To UBound(Tbl)
                If Not Tbl(l, 1) = "" And Not Dico.exists(Tbl(l, 1)) Then Dico(Tbl(l, 1)) = Ws.Name
            Next l
        End If
    End If
Next Ws

Derlig2 = 4 'Ws1.Range("A65536").End(xlUp).Row + 1
Ws1.Range("A" & Derlig2).Resize(Dico.Count) = Application.Transpose(Dico.keys)
Ws1.Range("B" & Derlig2).Resize(Dico.Count) = Application.Transpose(Dico.items)

Set Dico = Nothing
Set Ws1 = Nothing

Application.ScreenUpdating = True

End Sub
 

niiiiiiiiiico

XLDnaute Occasionnel
Alors, j'ai quelques cellules parasites à neutraliser (je ne sais pas si c'est en lien avec le message d'erreur).

Je souhaiterais que ça démarre en C3 (car j'ai un intitulé de colonne en C2 sur chaque onglet que je ne souhaite pas récupérer)

Dans certaines cellules j'ai un chiffre que je ne souhaite pas récupérer (peut on dire à la macro de récupérer que les cellules dont le nb de caractère total > 5 par exemple ?)

Et dans certaines cellules j'ai des formules qui me renvoie soit des valeurs que je ne sosuhaite pas, soit un blanc (formule avec si bidule not ok alors ""). Là aussi, je voudrai que chaque formule soit ignorée (qu'elle renvoie ou non une valeur)

Finalement, ça apporte qqs complexités :D
 

Discussions similaires

Statistiques des forums

Discussions
312 115
Messages
2 085 455
Membres
102 891
dernier inscrit
cocowild