Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Gestion liste de membres

11 réponses
Avatar
Jacquouille
Bonjour,
Je reçois tous les mois, une liste des membres en ordre de cotisation.
Forcément, ceux qui ne paient plus, ne sont plus membres.
Tous les mois, certains partent et d'autres arrivent, mais les listes
envoyées mettent tout à la queue leu leu.
Voir exemple;
http://www.cjoint.com/c/EGesQCHY4hI

Est-il possible, via VBA (XL2003 et moi 1948) de faire en sorte que le
tableau ressemble à celui que j'ai mis en explication?

Mille mercis
Bonne fin de WE
Jacques


Jacquouille

" Le vin est au repas ce que le parfum est à la femme."


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com

10 réponses

1 2
Avatar
Jacquouille
PS: j'ai oublié de vous dire que je trie ces liste par ordre alphabétique
croissant (A..B..C)
Merci


Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"Jacquouille" a écrit dans le message de groupe de discussion :
mn99gj$tin$

Bonjour,
Je reçois tous les mois, une liste des membres en ordre de cotisation.
Forcément, ceux qui ne paient plus, ne sont plus membres.
Tous les mois, certains partent et d'autres arrivent, mais les listes
envoyées mettent tout à la queue leu leu.
Voir exemple;
http://www.cjoint.com/c/EGesQCHY4hI

Est-il possible, via VBA (XL2003 et moi 1948) de faire en sorte que le
tableau ressemble à celui que j'ai mis en explication?

Mille mercis
Bonne fin de WE
Jacques


Jacquouille

" Le vin est au repas ce que le parfum est à la femme."


---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel antivirus Avast.
http://www.avast.com


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
Avatar
JLuc69
Une piste sur la façon dont je procederais :
1 ere colonne : une liste sans donblon de tous les membres présents
dans le tableau
2 eme colonne : pour le mois de janvier avec "Ok" dans la cellule en
face du nom si celui ci apparait dans la colonne janvier du tableau
reçu et rien s'il n'y est pas
3 eme colonne : pour le mois de fevrier idem
4 eme colonne : mois de mars
...

Jacquouille a exprimé avec précision :
Bonjour,
Je reçois tous les mois, une liste des membres en ordre de cotisation.
Forcément, ceux qui ne paient plus, ne sont plus membres.
Tous les mois, certains partent et d'autres arrivent, mais les listes
envoyées mettent tout à la queue leu leu.
Voir exemple;
http://www.cjoint.com/c/EGesQCHY4hI

Est-il possible, via VBA (XL2003 et moi 1948) de faire en sorte que le
tableau ressemble à celui que j'ai mis en explication?

Mille mercis
Bonne fin de WE
Jacques


Jacquouille

" Le vin est au repas ce que le parfum est à la femme."


---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel antivirus Avast.
http://www.avast.com
Avatar
MichD
Bonjour,

Je te propose ceci :

http://www.cjoint.com/c/EGflWhdsvwn
Avatar
DanielCo
Bonjour,
Essaie (résultat sur Feuil2) :
Sub test()
Dim Tabl1() As String, Tabl2() As Integer, Tabl3() As Integer
Dim Ctr As Integer, Ligne As Variant, Plage As Range, C As Range
Ctr = -1
ReDim Tabl1(0)
ReDim Tabl2(0)
ReDim Tabl3(0)
With Sheets("Feuil1")
Set Plage = .Range("A2", .Cells(.Rows.Count,
1).End(xlUp)).Resize(, 4)
For Each C In Plage
' If C.Value = "nom1" Then Stop
If C.Value <> "" Then
Ligne = Application.Match(C.Value, Tabl1, 0)
If Not IsNumeric(Ligne) Then
Ctr = Ctr + 1
ReDim Preserve Tabl1(Ctr)
ReDim Preserve Tabl2(Ctr)
ReDim Preserve Tabl3(Ctr)
Tabl1(Ctr) = C.Value
Tabl2(Ctr) = 1
Tabl3(Ctr) = C.Column - 1
Else
Tabl2(Ligne - 1) = Tabl2(Ligne - 1) + 1
If C.Column - 1 < Tabl3(Ligne - 1) Then Tabl3(Ligne
- 1) = C.Column - 1
End If
End If
Next C
End With
With Sheets("Feuil2")
.Cells.ClearContents
Sheets("Feuil1").[A1:D1].Copy .[A1]
For i = 0 To UBound(Tabl1)
.Cells(i + 2, 1).Offset(, Tabl3(i)).Resize(,
Tabl2(i)).Value = Tabl1(i)
Next i
End With
End Sub
Daniel


Bonjour,
Je reçois tous les mois, une liste des membres en ordre de cotisation.
Forcément, ceux qui ne paient plus, ne sont plus membres.
Tous les mois, certains partent et d'autres arrivent, mais les listes
envoyées mettent tout à la queue leu leu.
Voir exemple;
http://www.cjoint.com/c/EGesQCHY4hI

Est-il possible, via VBA (XL2003 et moi 1948) de faire en sorte que le
tableau ressemble à celui que j'ai mis en explication?

Mille mercis
Bonne fin de WE
Jacques


Jacquouille

" Le vin est au repas ce que le parfum est à la femme."


---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel antivirus Avast.
http://www.avast.com
Avatar
Jacquouille
Bonsoir
C'était un peu mon idée de départ, mais tous ces X et toutes ces formules,
c'est assez lourd.
Merci pour cette approche.
Jacques



Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"JLuc69" a écrit dans le message de groupe de discussion :


Une piste sur la façon dont je procederais :
1 ere colonne : une liste sans donblon de tous les membres présents
dans le tableau
2 eme colonne : pour le mois de janvier avec "Ok" dans la cellule en
face du nom si celui ci apparait dans la colonne janvier du tableau
reçu et rien s'il n'y est pas
3 eme colonne : pour le mois de fevrier idem
4 eme colonne : mois de mars
...

Jacquouille a exprimé avec précision :
Bonjour,
Je reçois tous les mois, une liste des membres en ordre de cotisation.
Forcément, ceux qui ne paient plus, ne sont plus membres.
Tous les mois, certains partent et d'autres arrivent, mais les listes
envoyées mettent tout à la queue leu leu.
Voir exemple;
http://www.cjoint.com/c/EGesQCHY4hI

Est-il possible, via VBA (XL2003 et moi 1948) de faire en sorte que le
tableau ressemble à celui que j'ai mis en explication?

Mille mercis
Bonne fin de WE
Jacques


Jacquouille

" Le vin est au repas ce que le parfum est à la femme."


---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel antivirus Avast.
http://www.avast.com




---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
Avatar
MichD
Dans ma procédure, au lieu de faire des X dans tous les cellules où
les membres sont présents, tu aurais pu choisir de faire un X pour
seulement les membres absents.

Pour ce faire, tu n'as qu'à modifier cette ligne de code
If IsNumeric(Application.Match(C, Colonne, 0)) Then

comme ceci :
If Not IsNumeric(Application.Match(C, Colonne, 0)) Then

Il y a seulement le "Not" à ajouter!
Avatar
Jacquouille
Salut Denis,
Au vu de l'exemple, c'est exactement cela qu'il me faut.
J'ai transposé ton exemple dans mon fichier réel....et j'ai un petit
problème:

Lorsque les colonnes ne sont pas de longueur identique, la macro prend la
dernière ligne en col A.... ce qui amène des désagréments si D ou E ou ...
sont plus longues.
Dans cette ligne, pourrais-tu imaginer un derL non pas d'une colonne, mais
de tout le tableau de datas (dont chaque mois apportera une colonne
supplémentaire)
pour faire bref, il faudrait (du moins, je le pense) un derCol et un derL
sur la colonne la plus longue.
For Each C In .Range("A2:A" & .Range("A65536").End(xlUp).Row)

Ouf.

Déjà merci
Une bonne soirée

Jacques, qui espère avoir beaucoup de nouveaux membres chaque mois.


Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"MichD" a écrit dans le message de groupe de discussion :
mnb5j7$ilh$

Bonjour,

Je te propose ceci :

http://www.cjoint.com/c/EGflWhdsvwn


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
Avatar
MichD
Essaie ceci :

'------------------------------------------------------------------------
Sub test()
Dim Col As Object, C As Range, Rg As Range, T()
Dim Cel As Range, Colonne As Range, Sh As Worksheet
Dim Sh2 As Worksheet, DerLig As Long, DerCol As Long

Application.ScreenUpdating = False
Application.EnableEvents = False

Set Sh = Worksheets("Feuil1") 'feuille où sont les données
Set Sh2 = Worksheets("Feuil2") 'Feuille Résultat

Set Col = CreateObject("Scripting.Dictionary")

With Sh
DerLig = .Cells.Find("*", LookIn:=xlValues, _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

DerCol = Cells.Find("*", LookIn:=xlValues, _
SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
With .Range("A1", .Cells(DerLig, DerCol))
Set Rg = .Offset(1).Resize(.Cells.Count - 1)
End With
End With

For Each C In Rg
If Not Col.exists(C.Value) Then
Col.Add C.Value, C.Address
End If
Next
T = Col.keys

With Sh2 'Feuille où sont les résultats.
.Cells.Clear
.Range("B1").Resize(, Rg.Columns.Count).Value = _
Sh.Range("A1").Resize(, Rg.Columns.Count).Value
With .Range("A2").Resize(UBound(T))
.Value = Application.Transpose(T)
.Sort Key1:=.Item(1, 1), order1:=xlAscending, Header:=xlNo
End With

For Each C In .Range("A2:A" & .Range("A65536").End(xlUp).Row)
For Each Colonne In Rg.Columns
If IsNumeric(Application.Match(C, Colonne, 0)) Then
.Cells(C.Row, Colonne.Column + 1) = "X"
End If
Next
Next
End With
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
'------------------------------------------------------------------------
Avatar
MichD
Correction : J'ai omis un point devant le mot Cells dans cette ligne de code

DerCol = Cells.Find("*", LookIn:=xlValues, _
SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column

Prière de l'ajouter!
Avatar
Jacquouille
Bonsoir
C'est que ça fonctionne, mon cher. Me voici avec une version avec les noms
et une avec les X
grand merci
Bonne soirée
Jacques


Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"DanielCo" a écrit dans le message de groupe de discussion :
mnb972$qmb$

Bonjour,
Essaie (résultat sur Feuil2) :
Sub test()
Dim Tabl1() As String, Tabl2() As Integer, Tabl3() As Integer
Dim Ctr As Integer, Ligne As Variant, Plage As Range, C As Range
Ctr = -1
ReDim Tabl1(0)
ReDim Tabl2(0)
ReDim Tabl3(0)
With Sheets("Feuil1")
Set Plage = .Range("A2", .Cells(.Rows.Count,
1).End(xlUp)).Resize(, 4)
For Each C In Plage
' If C.Value = "nom1" Then Stop
If C.Value <> "" Then
Ligne = Application.Match(C.Value, Tabl1, 0)
If Not IsNumeric(Ligne) Then
Ctr = Ctr + 1
ReDim Preserve Tabl1(Ctr)
ReDim Preserve Tabl2(Ctr)
ReDim Preserve Tabl3(Ctr)
Tabl1(Ctr) = C.Value
Tabl2(Ctr) = 1
Tabl3(Ctr) = C.Column - 1
Else
Tabl2(Ligne - 1) = Tabl2(Ligne - 1) + 1
If C.Column - 1 < Tabl3(Ligne - 1) Then Tabl3(Ligne
- 1) = C.Column - 1
End If
End If
Next C
End With
With Sheets("Feuil2")
.Cells.ClearContents
Sheets("Feuil1").[A1:D1].Copy .[A1]
For i = 0 To UBound(Tabl1)
.Cells(i + 2, 1).Offset(, Tabl3(i)).Resize(,
Tabl2(i)).Value = Tabl1(i)
Next i
End With
End Sub
Daniel


Bonjour,
Je reçois tous les mois, une liste des membres en ordre de cotisation.
Forcément, ceux qui ne paient plus, ne sont plus membres.
Tous les mois, certains partent et d'autres arrivent, mais les listes
envoyées mettent tout à la queue leu leu.
Voir exemple;
http://www.cjoint.com/c/EGesQCHY4hI

Est-il possible, via VBA (XL2003 et moi 1948) de faire en sorte que le
tableau ressemble à celui que j'ai mis en explication?

Mille mercis
Bonne fin de WE
Jacques


Jacquouille

" Le vin est au repas ce que le parfum est à la femme."


---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel antivirus Avast.
http://www.avast.com




---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
1 2