Filtre automatique des données sur VBA
Ok je refais ça demain sur un pc normal car je suis sur un mac .
une fois de plus merci. je vous tiens informé demain matin.
Bonne soirée.
Bonjour,
Ca marche super
Merci et bonne journée.
Bonjour
J'ai un problème similaire. Je suis aussi sur Mac et j'ai une macro qui a été faite sur PC.
Même erreur sur la phrase Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
J'ai des tonnes de données dans une seule colonne et j'aimerai les répartir sur plusieurs lignes, à chaque 14 cellules précisément car ce sont les 14 résultats des participants. Ci joint mon document de base.
Je n'y connais pas grand chose en Macro, je voudrais apprendre un peu plus car je risque d'utiliser souvent ce genre de procédure.
Que dois-je faire pour adapter cette macro sur Mac? Je n'ai pas tout compris en lisant votre conversation...
Merci!
Voici le code au complet
Sub Macro1()
Dim O1 As Object 'déclare la variable O1 (Onglet 1)
Dim O2 As Object 'déclare la variable O2 (Onglet 2)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim PL As Range 'déclare la variable PL (PLage)
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim CEL As Range 'déclare la variable CEL (CELlule)
Dim TMP As Variant 'déclare la variable TMP (tableau TeMPoraire)
Dim I As Integer 'déclare la variable I (Incrément)
Dim PLV As Range 'déclare la variable PLV (Plage Visible)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
Set O1 = Sheets("Feuille1") 'définit l'onglet O1
Set O2 = Sheets("Feuil2") 'définit l'onglet O2 (à adapter)
DL = O1.Cells(Application.Rows.Count, 4).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 4 (=D) de l'onglet O1
Set PL = O1.Range("D2:D" & DL) 'définit la plage PL
Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
For Each CEL In PL 'boucle sur toutes les cellules CEL de la plage PL
D(CEL.Value) = "" 'alimente le dictionnaire D
Next CEL 'prochaine cellule de la boucle
TMP = D.keys 'récupère dans le tableau temporaire TMP la liste du dictionnaire D sans doublon
For I = 0 To UBound(TMP) 'boucle sur touts les éléments du tableau TMP
'filtre en A1 la colonne 4 (=D) de l'onglet O1 avec TMP(I) comme critère
O1.Range("A1").AutoFilter Field:=4, Criteria1:=TMP(I)
'définit la plage PLV (cellule visibles (non filtrées) de la plage PL décalée d'une colonne à droite = colonne E)
Set PLV = PL.Offset(0, 1).SpecialCells(xlCellTypeVisible)
'définit la cellule de destination DEST (A1 si A1 est vide, sinon la première cellule vide de la colonne A de l'onglet O2)
Set DEST = IIf(O2.Range("A1") = "", O2.Range("A1"), O2.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0))
DEST.Value = TMP(I) 'place dans DEST l'"ident"
'transpose dans DEST décalée d'une colonne à droite les ZReponses
DEST.Offset(0, 1).Resize(, 14) = Application.Transpose(PLV)
O1.Range("A1").AutoFilter 'supprime le filtre automatique
Next I 'prochian élément de la boucle
End Sub
Bonjour et bienvenu(e)
Un fichier vide est aussi utile qu'un couteau à une poule
Ou sont les données que tu dois répartir sur 14 colonnes ?
As tu essayé Données ---> Convertir ?
Je sais que l'ersatz du PC n'accepte pas le Scripting.dictionary mais avec si peu de renseignement cela ne va pas être facile de te trouver une solution
Il faut un fichier contenant quelques données (bidons) et un (ou plusieurs) exemple de ce que tu veux
Ps : Ouvre un post à ton nom
Bonjour,
J'ai joint un fichier avec des données... Il y a la colonne ZReponse que je voudrais donc répartir.
Pour être plus clair, j'ai 62 participants (subject) qui ont répondu à 14 réponses et qui étaient repartit en deux conditions (condition).
Je voudrais avoir une ligne par participants.
Mais ce que vous dites est très intéressant : le convertir !! En faite je crois qu'une solution beaucoup plus simple qu'un macro existe, mais personne n'a pu m'aider jusqu'à maintenant.
J'essaye avec le convertir en ce moment mais je ne trouve pas comment faire, car je n'ai pas de signe particulier qui sépare mes participants à part leur numéro et le fait qu'ils aient chacun 14 résultats !!
Voilà merci !
Oupss.. je vais ouvrir un poste ! ici : https://forum.excel-pratique.com/excel/d-une-colonne-a-plusieurs-lignes-t57007.html