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

"regroupement" de cellule : petit problème pour grand tableau

6 réponses
Avatar
sebyarof
Bonjour,

je suis un petit nouveau sur le forum : c'est que je bute sur un petit problème. J'ai un tableau de 19 732 entrées, et 200 colonnes. La première colonne est remplie par des noms d'espèces, mais attention une espèce peut être sur plusieurs lignes (il ya en fait 7000 noms d'espèces). la première ligne est remplie par des noms de lois et arrêté à associer aux espèces. Lorsque une espèce est soumise à une loi, la case est marqué par une croix. Donc, j'ai un tableau avec plein de croix mais il n'y a qu'une seule croix par ligne.
Lorsqu'une espèce est associée à plusieurs lois, j'ai autant de ligne que de lois à associés par une croix.

Le problème : j'aimerais avoir une seule ligne par espèce avec toutes les croix associés. En quelques sortes, "fusionner" les lignes des espèces sans perdre de croix.
voici le lien demandé http://cjoint.com/?ekaHLy3QTb
J'ai essayé avec la fonction SI, de choper une macro, mais je bute
vraiment et
devant l'ampleur des données je ne peux m'amuser à faire ça méthode
bourrin
merci d'avance...
,

6 réponses

Avatar
Daniel.C
Bonjour.
La formule en B2 est :
=SI(SOMMEPROD((Feuil1!$A:$A=$A2)*(DECALER(Feuil1!$A:$A;;EQUIV(B$1;Feuil1!$1:$1)-1)="x"));"x";"")
Si tu n'as pas XL2007, remplace "Feuil1!$A:$A" par
"Feuil1!$A$1:$A$20000".
Recopie la formule à droite et vers le bas.
Cordialement.
Daniel

Bonjour,

je suis un petit nouveau sur le forum : c'est que je bute sur un petit
problème. J'ai un tableau de 19 732 entrées, et 200 colonnes. La première
colonne est remplie par des noms d'espèces, mais attention une espèce peut
être sur plusieurs lignes (il ya en fait 7000 noms d'espèces). la première
ligne est remplie par des noms de lois et arrêté à associer aux espèces.
Lorsque une espèce est soumise à une loi, la case est marqué par une croix.
Donc, j'ai un tableau avec plein de croix mais il n'y a qu'une seule croix
par ligne. Lorsqu'une espèce est associée à plusieurs lois, j'ai autant de
ligne que de lois à associés par une croix.

Le problème : j'aimerais avoir une seule ligne par espèce avec toutes les
croix associés. En quelques sortes, "fusionner" les lignes des espèces sans
perdre de croix.
voici le lien demandé http://cjoint.com/?ekaHLy3QTb
J'ai essayé avec la fonction SI, de choper une macro, mais je bute
vraiment et
devant l'ampleur des données je ne peux m'amuser à faire ça méthode
bourrin
merci d'avance...
,


Avatar
Daniel.C
Oups; petite erreur.
Daniel

Bonjour.
La formule en B2 est :
=SI(SOMMEPROD((Feuil1!$A:$A=$A2)*(DECALER(Feuil1!$A:$A;;EQUIV(B$1;Feuil1!$1:$1)-1)="x"));"x";"")
Si tu n'as pas XL2007, remplace "Feuil1!$A:$A" par "Feuil1!$A$1:$A$20000".
Recopie la formule à droite et vers le bas.
Cordialement.
Daniel

Bonjour,

je suis un petit nouveau sur le forum : c'est que je bute sur un petit
problème. J'ai un tableau de 19 732 entrées, et 200 colonnes. La première
colonne est remplie par des noms d'espèces, mais attention une espèce peut
être sur plusieurs lignes (il ya en fait 7000 noms d'espèces). la première
ligne est remplie par des noms de lois et arrêté à associer aux espèces.
Lorsque une espèce est soumise à une loi, la case est marqué par une croix.
Donc, j'ai un tableau avec plein de croix mais il n'y a qu'une seule croix
par ligne. Lorsqu'une espèce est associée à plusieurs lois, j'ai autant de
ligne que de lois à associés par une croix.

Le problème : j'aimerais avoir une seule ligne par espèce avec toutes les
croix associés. En quelques sortes, "fusionner" les lignes des espèces sans
perdre de croix.
voici le lien demandé http://cjoint.com/?ekaHLy3QTb
J'ai essayé avec la fonction SI, de choper une macro, mais je bute
vraiment et
devant l'ampleur des données je ne peux m'amuser à faire ça méthode
bourrin
merci d'avance...
,




Avatar
Daniel.C
Plus correct :
=SI(SOMMEPROD((Feuil1!$A$1:$A$20000=$A2)*(DECALER(Feuil1!$A1:$A$20000;;EQUIV(B$1;Feuil1!$1:$1)-1)="x"))>0;"x";"")
Daniel

Oups; petite erreur.
Daniel

Bonjour.
La formule en B2 est :
=SI(SOMMEPROD((Feuil1!$A:$A=$A2)*(DECALER(Feuil1!$A:$A;;EQUIV(B$1;Feuil1!$1:$1)-1)="x"));"x";"")
Si tu n'as pas XL2007, remplace "Feuil1!$A:$A" par "Feuil1!$A$1:$A$20000".
Recopie la formule à droite et vers le bas.
Cordialement.
Daniel

Bonjour,

je suis un petit nouveau sur le forum : c'est que je bute sur un petit
problème. J'ai un tableau de 19 732 entrées, et 200 colonnes. La première
colonne est remplie par des noms d'espèces, mais attention une espèce peut
être sur plusieurs lignes (il ya en fait 7000 noms d'espèces). la première
ligne est remplie par des noms de lois et arrêté à associer aux espèces.
Lorsque une espèce est soumise à une loi, la case est marqué par une
croix. Donc, j'ai un tableau avec plein de croix mais il n'y a qu'une
seule croix par ligne. Lorsqu'une espèce est associée à plusieurs lois,
j'ai autant de ligne que de lois à associés par une croix.

Le problème : j'aimerais avoir une seule ligne par espèce avec toutes les
croix associés. En quelques sortes, "fusionner" les lignes des espèces
sans perdre de croix.
voici le lien demandé http://cjoint.com/?ekaHLy3QTb
J'ai essayé avec la fonction SI, de choper une macro, mais je bute
vraiment et
devant l'ampleur des données je ne peux m'amuser à faire ça méthode
bourrin
merci d'avance...
,






Avatar
MichDenis
Bonjour,

Tu copie cette macro dans un module standard :

Dans la procédure, tu dois adapter le nom de la feuille
où sont tes données et le nom de la feuille où copier
les données.

Attention, tu dois obligatoirement trier la colonne A

'---------------------------------------------
Sub test()
Dim Rg As Range, R As Long, C As Range
Dim Col As Integer, T As String

With Worksheets("Feuil1") ' Nom à adapter
Set Rg = .Range("A2:A" & .Range("A65536").End(xlUp).Row)
End With
Application.ScreenUpdating = False
On Error Resume Next
R = 1

Set C = Rg(1, 1)
Do While C.Row <= Rg.Rows.Count - 1
R = R + 1
T = Trim(C.Value)
If T = "Accipiter francesii</i> A. Smith, 1834" Then Stop
Do While Trim(C.Value) = T
Col = C.Resize(, Columns.Count).Find(what:="x", _
lookat:=xlWhole, LookIn:=xlValues).Column
If Err = 0 Then
worksheets("Feuil2").Cells(R, Col) = "X" 'nom Feuille à adapter
Set C = C.Offset(1)
Else
Err = 0
Set C = C.Offset(1)
End If
Loop
Loop
Application.ScreenUpdating =true
End Sub
'---------------------------------------------



"sebyarof" a écrit dans le message de groupe de discussion :

Bonjour,

je suis un petit nouveau sur le forum : c'est que je bute sur un petit
problème. J'ai un tableau de 19 732 entrées, et 200 colonnes. La première
colonne est remplie par des noms d'espèces, mais attention une espèce peut être
sur plusieurs lignes (il ya en fait 7000 noms d'espèces). la première ligne est
remplie par des noms de lois et arrêté à associer aux espèces. Lorsque une
espèce est soumise à une loi, la case est marqué par une croix. Donc, j'ai un
tableau avec plein de croix mais il n'y a qu'une seule croix par ligne.
Lorsqu'une espèce est associée à plusieurs lois, j'ai autant de ligne que de
lois à associés par une croix.

Le problème : j'aimerais avoir une seule ligne par espèce avec toutes les croix
associés. En quelques sortes, "fusionner" les lignes des espèces sans perdre de
croix.
voici le lien demandé http://cjoint.com/?ekaHLy3QTb
J'ai essayé avec la fonction SI, de choper une macro, mais je bute
vraiment et
devant l'ampleur des données je ne peux m'amuser à faire ça méthode
bourrin
merci d'avance...
,
Avatar
MichDenis
Je veux simplement te mentionner que pour la macro :
Accipiter francesii</i> A. Smith, 1834
Accipiter francesii</i> A. Smith, 1835
Accipiter francesii</i> A. Smith, 1836

C'est 3 entrées différentes, il semble que ton tableau des résultats
les traite comme si c'était la même chose !

Si tu veux avoir une liste (exacte), Après avoir fait un tri en ordre croissant
dans ta feuille source en colonne A:A
tu fais un filtre avancé sur la colonne A:A en cochant dans le bas de la
fenêtre la case à cocher "sans doublon". Tu n'as pas besoin de zone de critère.
Tu copies cette liste dans ta zone de résultat.




"MichDenis" a écrit dans le message de groupe de discussion :

Bonjour,

Tu copie cette macro dans un module standard :

Dans la procédure, tu dois adapter le nom de la feuille
où sont tes données et le nom de la feuille où copier
les données.

Attention, tu dois obligatoirement trier la colonne A

'---------------------------------------------
Sub test()
Dim Rg As Range, R As Long, C As Range
Dim Col As Integer, T As String

With Worksheets("Feuil1") ' Nom à adapter
Set Rg = .Range("A2:A" & .Range("A65536").End(xlUp).Row)
End With
Application.ScreenUpdating = False
On Error Resume Next
R = 1

Set C = Rg(1, 1)
Do While C.Row <= Rg.Rows.Count - 1
R = R + 1
T = Trim(C.Value)
If T = "Accipiter francesii</i> A. Smith, 1834" Then Stop
Do While Trim(C.Value) = T
Col = C.Resize(, Columns.Count).Find(what:="x", _
lookat:=xlWhole, LookIn:=xlValues).Column
If Err = 0 Then
worksheets("Feuil2").Cells(R, Col) = "X" 'nom Feuille à adapter
Set C = C.Offset(1)
Else
Err = 0
Set C = C.Offset(1)
End If
Loop
Loop
Application.ScreenUpdating =true
End Sub
'---------------------------------------------



"sebyarof" a écrit dans le message de groupe de discussion :

Bonjour,

je suis un petit nouveau sur le forum : c'est que je bute sur un petit
problème. J'ai un tableau de 19 732 entrées, et 200 colonnes. La première
colonne est remplie par des noms d'espèces, mais attention une espèce peut être
sur plusieurs lignes (il ya en fait 7000 noms d'espèces). la première ligne est
remplie par des noms de lois et arrêté à associer aux espèces. Lorsque une
espèce est soumise à une loi, la case est marqué par une croix. Donc, j'ai un
tableau avec plein de croix mais il n'y a qu'une seule croix par ligne.
Lorsqu'une espèce est associée à plusieurs lois, j'ai autant de ligne que de
lois à associés par une croix.

Le problème : j'aimerais avoir une seule ligne par espèce avec toutes les croix
associés. En quelques sortes, "fusionner" les lignes des espèces sans perdre de
croix.
voici le lien demandé http://cjoint.com/?ekaHLy3QTb
J'ai essayé avec la fonction SI, de choper une macro, mais je bute
vraiment et
devant l'ampleur des données je ne peux m'amuser à faire ça méthode
bourrin
merci d'avance...
,
Avatar
MichDenis
Bonjour Sebyarof,

Dans la procédure, tu dois enlever cette ligne de code,
"If T = "Accipiter francesii</i> A. Smith, 1834" Then Stop"

Elle a servi de point de repère qui a mené aux explications
que je t'ai fournies concernant la discrimination que faisait
la procédure sur pour chacune de ces entrées.

Accipiter francesii</i> A. Smith, 1834
Accipiter francesii</i> A. Smith, 1835
Accipiter francesii</i> A. Smith, 1836

De plus, je me suis aussi aperçu à partir de ces données, que ta
colonne n'était pas parfaitement triée, ce qui est catastrophique
si tu veux obtenir le résultat escompté.

La procédure revisée :

Feuil1 = Ta feuille originale de tes données
Feuil2 = Où sont copiées les données
'---------------------------------------------
Sub test()
Dim Rg As Range, R As Long, C As Range
Dim Col As Integer, T As String

With Worksheets("Feuil1") ' Nom à adapter
Set Rg = .Range("A2:A" & .Range("A65536").End(xlUp).Row)
End With
Application.ScreenUpdating = False
On Error Resume Next
R = 1

Set C = Rg(1, 1)
Do While C.Row <= Rg.Rows.Count - 1
R = R + 1
T = Trim(C.Value)
Do While Trim(C.Value) = T
Col = C.Resize(, Columns.Count).Find(what:="x", _
lookat:=xlWhole, LookIn:=xlValues).Column
If Err = 0 Then
worksheets("Feuil2").Cells(R, Col) = "X" 'nom Feuille à adapter
Set C = C.Offset(1)
Else
Err = 0
Set C = C.Offset(1)
End If
Loop
Loop
Application.ScreenUpdating =true
End Sub
'---------------------------------------------