vba syntaxe colonnes

grodep

XLDnaute Occasionnel
Bonjour à tous, je rouvre un nouveau fil car cette nouvelle question n'a rien à voir avec celle que j'ai posé ce matin (merci pierrot93).
Dans mon tableau, j'ai une macro vba qui répertorie dans un dico une certaine liste puis qui l'affiche dans une colonne "fixe" (AK2:AK100).
Code:
Sub listage_absents()
Set mondico = CreateObject("Scripting.Dictionary")
For i = 3 To 35
For j = 25 To 75
If Cells(j, i) <> "" Then temp = Cells(j, 1)
mondico(temp) = temp
Next j
 [AK2:AK100].ClearContents
     For Each c In mondico
      [AK65000].End(xlUp).Offset(1) = c
     Next c
next i
End Sub
Ce que je souhaiterais, c'est qu'elle affiche ce résultat sur la colonne sur laquelle elle vient d'opérer et qu'elle décale ensuite au fur et à mesure. Malheureusement, je ne sais comment écrire cette colonne en vba.
MErci à tous les contributeurs
 

Pièces jointes

  • testlistagedeuxcolonnes.xlsm
    15.8 KB · Affichages: 34
  • testlistagedeuxcolonnes.xlsm
    15.8 KB · Affichages: 35
  • testlistagedeuxcolonnes.xlsm
    15.8 KB · Affichages: 31

pierrejean

XLDnaute Barbatruc
Re : vba syntaxe colonnes

bonjour grodep

Atester:
Code:
Sub listage_absents()
Set mondico = CreateObject("Scripting.Dictionary")
For i = 3 To 35
For j = 25 To 75
If Cells(j, i) <> "" Then temp = Cells(j, 1)
mondico(temp) = temp
Next j
 Range(Cells(1, i), Cells(100, i)).ClearContents
     For Each c In mondico
      Cells(Rows.Count, i).End(xlUp).Offset(1) = c
     Next c
Next i
End Sub
 

grodep

XLDnaute Occasionnel
Re : vba syntaxe colonnes

Merci pierrejean pour cette proposition.
Pour une raison que je n'ai pas encore élucidé, cela me donne un résultat en "escalier" tout à fait surprenant :) Pas exactement ce que je cherchais, mais artistiquement très joli: Le listing des noms débute à chaque nouvelle colonne à partir de la dernière ligne utilisée sur la colonne d'avant.

J'ai fini par me creuser un peu la tête pour trouver un résultat certes moche en terme de syntaxe vba mais qui me donne le résultat escompté:
Code:
Set mondico = CreateObject("Scripting.Dictionary")
Range("C5:AF23").Clear
For i = 3 To 32
For j = 25 To 65
If Cells(j, i) <> "" Then temp = Cells(j, 1)
mondico(temp) = temp
Next j
t = 23 ' l'en-tête de mon tableau est sur la ligne 24
For Each c In mondico
          Cells(t, i).Value = c
          t = t - 1
          Next c
          temp = ""
          mondico.RemoveAll
Next i

Ainsi, j'ai bien ma liste de noms qui apparaît au dessus de chaque colonne!

Merci pierrejean de m'avoir guidé sur le bon chemin, une nouvelle fois!
 

Discussions similaires

Réponses
12
Affichages
253
Réponses
23
Affichages
1 K

Statistiques des forums

Discussions
312 329
Messages
2 087 334
Membres
103 520
dernier inscrit
Azise