"regroupement" de cellule : petit problème pour grand tableau
6 réponses
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...
,
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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... ,
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...
,
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... ,
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... ,
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...
,
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... ,
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... ,
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...
,
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... ,
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... ,
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" <sebyarof@domain-xyz.in> a écrit dans le message de groupe de discussion :
7qGdnfSbMNhWO0HURVn_vwA@giganews.com...
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...
,
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... ,
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... ,
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" <michdenis@hotmail.com> a écrit dans le message de groupe de discussion :
FE3BAC4A-2E55-4524-AFEF-4DF1CD1C7EC2@microsoft.com...
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" <sebyarof@domain-xyz.in> a écrit dans le message de groupe de discussion :
7qGdnfSbMNhWO0HURVn_vwA@giganews.com...
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...
,
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... ,
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 '---------------------------------------------
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
'---------------------------------------------
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 '---------------------------------------------