Un grand merci à vous tous pour les réponses!
La macro d'Yvan ne fait pas exactement ce que je voulais. Je ne
connaissais pas Cjoint, mais je viens d'uploader deux documents pour vous
montrer.
====> Document 1: forme de départ
(C'est une longue liste compacte et sans espace de mot anglais suivi de
son équivalent en français - je l'ai écourtée car c'est juste pour
l'exemple):
http://cjoint.com/?igppXa1zeI
Ca donne qqchose comme (tout en une colonne A):
House
Maison
Wine
Vin
Bottle
Bouteille
etc...
====> Document 2: forme d'arrivée
http://cjoint.com/?igpqw3BNgn
Ca donne qqchose comme ceci (en deux colonnes cette fois, A pour les
"marqueurs", B pour les mots):
lx House
ps Nom commun
gn Maison
lx Wine
ps Nom commun
gn Vin
etc...
lx ps gn sont des marqueurs arbitraires (pour mon programme de
database, car à la fin je vais exporter ces fiches excel en format
spécial, comme du texte ou presque). NOTEZ: je dois non seulement
rajouter lx devant chaque mot anglais, et gn devant le mot français,
mais aussi insérer entre les deux une ligne avec la catégorie
grammaticale, pour ici: "nom commun" (ps = catégorie grammaticale)
je peux moi même bien sûr déplacer la colonne A vers la colonne B, et
faire des copier-collés à répétition pour ajouter dans la colonne A des
séquences de lx ps gn... mais c'est long. Et surtout, je n'ai pas moyen
d'insérer à chaque fois la ligne "ps nom commun" entre deux mots ! (j'ai
plusieurs fichiers de 2000 lignes ou plus)
Tout ce que j'ai trouvé, c'est une macro qui permet d'insérer une ligne
vide entre chaque définition pour bien les séparer. Ca donne:
House
Maison
Wine
Vin
Bottle
Bouteille
etc... La macro est la suivante:
Sub ajoutdeligne()
Dim i As Long, x As Long, lr As Long
x = ActiveSheet.UsedRange.Rows.Count
lr = ActiveCell.SpecialCells(xlLastCell).Row
If 3 > lr Then Exit Sub
If lr / 2 = Int(lr / 2) Then lr = lr + 1
For i = lr To 3 Step -2
Rows(i).EntireRow.Insert
Next i
End Sub
je ne sais pas si ça peut vous aider.
Merci encore !!!
Un grand merci à vous tous pour les réponses!
La macro d'Yvan ne fait pas exactement ce que je voulais. Je ne
connaissais pas Cjoint, mais je viens d'uploader deux documents pour vous
montrer.
====> Document 1: forme de départ
(C'est une longue liste compacte et sans espace de mot anglais suivi de
son équivalent en français - je l'ai écourtée car c'est juste pour
l'exemple):
http://cjoint.com/?igppXa1zeI
Ca donne qqchose comme (tout en une colonne A):
House
Maison
Wine
Vin
Bottle
Bouteille
etc...
====> Document 2: forme d'arrivée
http://cjoint.com/?igpqw3BNgn
Ca donne qqchose comme ceci (en deux colonnes cette fois, A pour les
"marqueurs", B pour les mots):
lx House
ps Nom commun
gn Maison
lx Wine
ps Nom commun
gn Vin
etc...
lx ps gn sont des marqueurs arbitraires (pour mon programme de
database, car à la fin je vais exporter ces fiches excel en format
spécial, comme du texte ou presque). NOTEZ: je dois non seulement
rajouter lx devant chaque mot anglais, et gn devant le mot français,
mais aussi insérer entre les deux une ligne avec la catégorie
grammaticale, pour ici: "nom commun" (ps = catégorie grammaticale)
je peux moi même bien sûr déplacer la colonne A vers la colonne B, et
faire des copier-collés à répétition pour ajouter dans la colonne A des
séquences de lx ps gn... mais c'est long. Et surtout, je n'ai pas moyen
d'insérer à chaque fois la ligne "ps nom commun" entre deux mots ! (j'ai
plusieurs fichiers de 2000 lignes ou plus)
Tout ce que j'ai trouvé, c'est une macro qui permet d'insérer une ligne
vide entre chaque définition pour bien les séparer. Ca donne:
House
Maison
Wine
Vin
Bottle
Bouteille
etc... La macro est la suivante:
Sub ajoutdeligne()
Dim i As Long, x As Long, lr As Long
x = ActiveSheet.UsedRange.Rows.Count
lr = ActiveCell.SpecialCells(xlLastCell).Row
If 3 > lr Then Exit Sub
If lr / 2 = Int(lr / 2) Then lr = lr + 1
For i = lr To 3 Step -2
Rows(i).EntireRow.Insert
Next i
End Sub
je ne sais pas si ça peut vous aider.
Merci encore !!!
Un grand merci à vous tous pour les réponses!
La macro d'Yvan ne fait pas exactement ce que je voulais. Je ne
connaissais pas Cjoint, mais je viens d'uploader deux documents pour vous
montrer.
====> Document 1: forme de départ
(C'est une longue liste compacte et sans espace de mot anglais suivi de
son équivalent en français - je l'ai écourtée car c'est juste pour
l'exemple):
http://cjoint.com/?igppXa1zeI
Ca donne qqchose comme (tout en une colonne A):
House
Maison
Wine
Vin
Bottle
Bouteille
etc...
====> Document 2: forme d'arrivée
http://cjoint.com/?igpqw3BNgn
Ca donne qqchose comme ceci (en deux colonnes cette fois, A pour les
"marqueurs", B pour les mots):
lx House
ps Nom commun
gn Maison
lx Wine
ps Nom commun
gn Vin
etc...
lx ps gn sont des marqueurs arbitraires (pour mon programme de
database, car à la fin je vais exporter ces fiches excel en format
spécial, comme du texte ou presque). NOTEZ: je dois non seulement
rajouter lx devant chaque mot anglais, et gn devant le mot français,
mais aussi insérer entre les deux une ligne avec la catégorie
grammaticale, pour ici: "nom commun" (ps = catégorie grammaticale)
je peux moi même bien sûr déplacer la colonne A vers la colonne B, et
faire des copier-collés à répétition pour ajouter dans la colonne A des
séquences de lx ps gn... mais c'est long. Et surtout, je n'ai pas moyen
d'insérer à chaque fois la ligne "ps nom commun" entre deux mots ! (j'ai
plusieurs fichiers de 2000 lignes ou plus)
Tout ce que j'ai trouvé, c'est une macro qui permet d'insérer une ligne
vide entre chaque définition pour bien les séparer. Ca donne:
House
Maison
Wine
Vin
Bottle
Bouteille
etc... La macro est la suivante:
Sub ajoutdeligne()
Dim i As Long, x As Long, lr As Long
x = ActiveSheet.UsedRange.Rows.Count
lr = ActiveCell.SpecialCells(xlLastCell).Row
If 3 > lr Then Exit Sub
If lr / 2 = Int(lr / 2) Then lr = lr + 1
For i = lr To 3 Step -2
Rows(i).EntireRow.Insert
Next i
End Sub
je ne sais pas si ça peut vous aider.
Merci encore !!!
Re bonjour
Regarde ceci: http://cjoint.com/?igqFCJxVjh
La procédure Test1 crée la liste comme tu la demandes et dans la foulée, la convertit
en tableau (plus facile à travailler).
La procedure Test2 convertit le tableau en liste comme tu la demandes.
OK?
@+
Yvan
"Mirandolle" a écrit dans le message de news:
42f4b261$0$22299$
| Un grand merci à vous tous pour les réponses!
|
| La macro d'Yvan ne fait pas exactement ce que je voulais. Je ne
| connaissais pas Cjoint, mais je viens d'uploader deux documents pour
| vous montrer.
|
| ====> Document 1: forme de départ
| (C'est une longue liste compacte et sans espace de mot anglais suivi de
| son équivalent en français - je l'ai écourtée car c'est juste pour
| l'exemple):
| http://cjoint.com/?igppXa1zeI
| Ca donne qqchose comme (tout en une colonne A):
| House
| Maison
| Wine
| Vin
| Bottle
| Bouteille
| etc...
|
| ====> Document 2: forme d'arrivée
| http://cjoint.com/?igpqw3BNgn
| Ca donne qqchose comme ceci (en deux colonnes cette fois, A pour les
| "marqueurs", B pour les mots):
| lx House
| ps Nom commun
| gn Maison
|
| lx Wine
| ps Nom commun
| gn Vin
|
| etc...
|
| lx ps gn sont des marqueurs arbitraires (pour mon programme de
| database, car à la fin je vais exporter ces fiches excel en format
| spécial, comme du texte ou presque). NOTEZ: je dois non seulement
| rajouter lx devant chaque mot anglais, et gn devant le mot français,
| mais aussi insérer entre les deux une ligne avec la catégorie
| grammaticale, pour ici: "nom commun" (ps = catégorie grammaticale)
|
| je peux moi même bien sûr déplacer la colonne A vers la colonne B, et
| faire des copier-collés à répétition pour ajouter dans la colonne A des
| séquences de lx ps gn... mais c'est long. Et surtout, je n'ai pas
| moyen d'insérer à chaque fois la ligne "ps nom commun" entre deux mots
| ! (j'ai plusieurs fichiers de 2000 lignes ou plus)
|
| Tout ce que j'ai trouvé, c'est une macro qui permet d'insérer une ligne
| vide entre chaque définition pour bien les séparer. Ca donne:
|
| House
| Maison
|
| Wine
| Vin
|
| Bottle
| Bouteille
|
| etc... La macro est la suivante:
|
| Sub ajoutdeligne()
| Dim i As Long, x As Long, lr As Long
| x = ActiveSheet.UsedRange.Rows.Count
| lr = ActiveCell.SpecialCells(xlLastCell).Row
| If 3 > lr Then Exit Sub
| If lr / 2 = Int(lr / 2) Then lr = lr + 1
| For i = lr To 3 Step -2
| Rows(i).EntireRow.Insert
| Next i
| End Sub
|
| je ne sais pas si ça peut vous aider.
|
| Merci encore !!!
Re bonjour
Regarde ceci: http://cjoint.com/?igqFCJxVjh
La procédure Test1 crée la liste comme tu la demandes et dans la foulée, la convertit
en tableau (plus facile à travailler).
La procedure Test2 convertit le tableau en liste comme tu la demandes.
OK?
@+
Yvan
"Mirandolle" <user@domain.invalid> a écrit dans le message de news:
42f4b261$0$22299$8fcfb975@news.wanadoo.fr...
| Un grand merci à vous tous pour les réponses!
|
| La macro d'Yvan ne fait pas exactement ce que je voulais. Je ne
| connaissais pas Cjoint, mais je viens d'uploader deux documents pour
| vous montrer.
|
| ====> Document 1: forme de départ
| (C'est une longue liste compacte et sans espace de mot anglais suivi de
| son équivalent en français - je l'ai écourtée car c'est juste pour
| l'exemple):
| http://cjoint.com/?igppXa1zeI
| Ca donne qqchose comme (tout en une colonne A):
| House
| Maison
| Wine
| Vin
| Bottle
| Bouteille
| etc...
|
| ====> Document 2: forme d'arrivée
| http://cjoint.com/?igpqw3BNgn
| Ca donne qqchose comme ceci (en deux colonnes cette fois, A pour les
| "marqueurs", B pour les mots):
| lx House
| ps Nom commun
| gn Maison
|
| lx Wine
| ps Nom commun
| gn Vin
|
| etc...
|
| lx ps gn sont des marqueurs arbitraires (pour mon programme de
| database, car à la fin je vais exporter ces fiches excel en format
| spécial, comme du texte ou presque). NOTEZ: je dois non seulement
| rajouter lx devant chaque mot anglais, et gn devant le mot français,
| mais aussi insérer entre les deux une ligne avec la catégorie
| grammaticale, pour ici: "nom commun" (ps = catégorie grammaticale)
|
| je peux moi même bien sûr déplacer la colonne A vers la colonne B, et
| faire des copier-collés à répétition pour ajouter dans la colonne A des
| séquences de lx ps gn... mais c'est long. Et surtout, je n'ai pas
| moyen d'insérer à chaque fois la ligne "ps nom commun" entre deux mots
| ! (j'ai plusieurs fichiers de 2000 lignes ou plus)
|
| Tout ce que j'ai trouvé, c'est une macro qui permet d'insérer une ligne
| vide entre chaque définition pour bien les séparer. Ca donne:
|
| House
| Maison
|
| Wine
| Vin
|
| Bottle
| Bouteille
|
| etc... La macro est la suivante:
|
| Sub ajoutdeligne()
| Dim i As Long, x As Long, lr As Long
| x = ActiveSheet.UsedRange.Rows.Count
| lr = ActiveCell.SpecialCells(xlLastCell).Row
| If 3 > lr Then Exit Sub
| If lr / 2 = Int(lr / 2) Then lr = lr + 1
| For i = lr To 3 Step -2
| Rows(i).EntireRow.Insert
| Next i
| End Sub
|
| je ne sais pas si ça peut vous aider.
|
| Merci encore !!!
Re bonjour
Regarde ceci: http://cjoint.com/?igqFCJxVjh
La procédure Test1 crée la liste comme tu la demandes et dans la foulée, la convertit
en tableau (plus facile à travailler).
La procedure Test2 convertit le tableau en liste comme tu la demandes.
OK?
@+
Yvan
"Mirandolle" a écrit dans le message de news:
42f4b261$0$22299$
| Un grand merci à vous tous pour les réponses!
|
| La macro d'Yvan ne fait pas exactement ce que je voulais. Je ne
| connaissais pas Cjoint, mais je viens d'uploader deux documents pour
| vous montrer.
|
| ====> Document 1: forme de départ
| (C'est une longue liste compacte et sans espace de mot anglais suivi de
| son équivalent en français - je l'ai écourtée car c'est juste pour
| l'exemple):
| http://cjoint.com/?igppXa1zeI
| Ca donne qqchose comme (tout en une colonne A):
| House
| Maison
| Wine
| Vin
| Bottle
| Bouteille
| etc...
|
| ====> Document 2: forme d'arrivée
| http://cjoint.com/?igpqw3BNgn
| Ca donne qqchose comme ceci (en deux colonnes cette fois, A pour les
| "marqueurs", B pour les mots):
| lx House
| ps Nom commun
| gn Maison
|
| lx Wine
| ps Nom commun
| gn Vin
|
| etc...
|
| lx ps gn sont des marqueurs arbitraires (pour mon programme de
| database, car à la fin je vais exporter ces fiches excel en format
| spécial, comme du texte ou presque). NOTEZ: je dois non seulement
| rajouter lx devant chaque mot anglais, et gn devant le mot français,
| mais aussi insérer entre les deux une ligne avec la catégorie
| grammaticale, pour ici: "nom commun" (ps = catégorie grammaticale)
|
| je peux moi même bien sûr déplacer la colonne A vers la colonne B, et
| faire des copier-collés à répétition pour ajouter dans la colonne A des
| séquences de lx ps gn... mais c'est long. Et surtout, je n'ai pas
| moyen d'insérer à chaque fois la ligne "ps nom commun" entre deux mots
| ! (j'ai plusieurs fichiers de 2000 lignes ou plus)
|
| Tout ce que j'ai trouvé, c'est une macro qui permet d'insérer une ligne
| vide entre chaque définition pour bien les séparer. Ca donne:
|
| House
| Maison
|
| Wine
| Vin
|
| Bottle
| Bouteille
|
| etc... La macro est la suivante:
|
| Sub ajoutdeligne()
| Dim i As Long, x As Long, lr As Long
| x = ActiveSheet.UsedRange.Rows.Count
| lr = ActiveCell.SpecialCells(xlLastCell).Row
| If 3 > lr Then Exit Sub
| If lr / 2 = Int(lr / 2) Then lr = lr + 1
| For i = lr To 3 Step -2
| Rows(i).EntireRow.Insert
| Next i
| End Sub
|
| je ne sais pas si ça peut vous aider.
|
| Merci encore !!!
Un grand merci à vous tous pour les réponses!
La macro d'Yvan ne fait pas exactement ce que je voulais. Je ne
connaissais pas Cjoint, mais je viens d'uploader deux documents pour vous
montrer.
====> Document 1: forme de départ
(C'est une longue liste compacte et sans espace de mot anglais suivi de
son équivalent en français - je l'ai écourtée car c'est juste pour
l'exemple):
http://cjoint.com/?igppXa1zeI
Ca donne qqchose comme (tout en une colonne A):
House
Maison
Wine
Vin
Bottle
Bouteille
etc...
====> Document 2: forme d'arrivée
http://cjoint.com/?igpqw3BNgn
Ca donne qqchose comme ceci (en deux colonnes cette fois, A pour les
"marqueurs", B pour les mots):
lx House
ps Nom commun
gn Maison
lx Wine
ps Nom commun
gn Vin
etc...
lx ps gn sont des marqueurs arbitraires (pour mon programme de
database, car à la fin je vais exporter ces fiches excel en format
spécial, comme du texte ou presque). NOTEZ: je dois non seulement
rajouter lx devant chaque mot anglais, et gn devant le mot français,
mais aussi insérer entre les deux une ligne avec la catégorie
grammaticale, pour ici: "nom commun" (ps = catégorie grammaticale)
je peux moi même bien sûr déplacer la colonne A vers la colonne B, et
faire des copier-collés à répétition pour ajouter dans la colonne A des
séquences de lx ps gn... mais c'est long. Et surtout, je n'ai pas moyen
d'insérer à chaque fois la ligne "ps nom commun" entre deux mots ! (j'ai
plusieurs fichiers de 2000 lignes ou plus)
Tout ce que j'ai trouvé, c'est une macro qui permet d'insérer une ligne
vide entre chaque définition pour bien les séparer. Ca donne:
House
Maison
Wine
Vin
Bottle
Bouteille
etc... La macro est la suivante:
Sub ajoutdeligne()
Dim i As Long, x As Long, lr As Long
x = ActiveSheet.UsedRange.Rows.Count
lr = ActiveCell.SpecialCells(xlLastCell).Row
If 3 > lr Then Exit Sub
If lr / 2 = Int(lr / 2) Then lr = lr + 1
For i = lr To 3 Step -2
Rows(i).EntireRow.Insert
Next i
End Sub
je ne sais pas si ça peut vous aider.
Merci encore !!!
Un grand merci à vous tous pour les réponses!
La macro d'Yvan ne fait pas exactement ce que je voulais. Je ne
connaissais pas Cjoint, mais je viens d'uploader deux documents pour vous
montrer.
====> Document 1: forme de départ
(C'est une longue liste compacte et sans espace de mot anglais suivi de
son équivalent en français - je l'ai écourtée car c'est juste pour
l'exemple):
http://cjoint.com/?igppXa1zeI
Ca donne qqchose comme (tout en une colonne A):
House
Maison
Wine
Vin
Bottle
Bouteille
etc...
====> Document 2: forme d'arrivée
http://cjoint.com/?igpqw3BNgn
Ca donne qqchose comme ceci (en deux colonnes cette fois, A pour les
"marqueurs", B pour les mots):
lx House
ps Nom commun
gn Maison
lx Wine
ps Nom commun
gn Vin
etc...
lx ps gn sont des marqueurs arbitraires (pour mon programme de
database, car à la fin je vais exporter ces fiches excel en format
spécial, comme du texte ou presque). NOTEZ: je dois non seulement
rajouter lx devant chaque mot anglais, et gn devant le mot français,
mais aussi insérer entre les deux une ligne avec la catégorie
grammaticale, pour ici: "nom commun" (ps = catégorie grammaticale)
je peux moi même bien sûr déplacer la colonne A vers la colonne B, et
faire des copier-collés à répétition pour ajouter dans la colonne A des
séquences de lx ps gn... mais c'est long. Et surtout, je n'ai pas moyen
d'insérer à chaque fois la ligne "ps nom commun" entre deux mots ! (j'ai
plusieurs fichiers de 2000 lignes ou plus)
Tout ce que j'ai trouvé, c'est une macro qui permet d'insérer une ligne
vide entre chaque définition pour bien les séparer. Ca donne:
House
Maison
Wine
Vin
Bottle
Bouteille
etc... La macro est la suivante:
Sub ajoutdeligne()
Dim i As Long, x As Long, lr As Long
x = ActiveSheet.UsedRange.Rows.Count
lr = ActiveCell.SpecialCells(xlLastCell).Row
If 3 > lr Then Exit Sub
If lr / 2 = Int(lr / 2) Then lr = lr + 1
For i = lr To 3 Step -2
Rows(i).EntireRow.Insert
Next i
End Sub
je ne sais pas si ça peut vous aider.
Merci encore !!!
Un grand merci à vous tous pour les réponses!
La macro d'Yvan ne fait pas exactement ce que je voulais. Je ne
connaissais pas Cjoint, mais je viens d'uploader deux documents pour vous
montrer.
====> Document 1: forme de départ
(C'est une longue liste compacte et sans espace de mot anglais suivi de
son équivalent en français - je l'ai écourtée car c'est juste pour
l'exemple):
http://cjoint.com/?igppXa1zeI
Ca donne qqchose comme (tout en une colonne A):
House
Maison
Wine
Vin
Bottle
Bouteille
etc...
====> Document 2: forme d'arrivée
http://cjoint.com/?igpqw3BNgn
Ca donne qqchose comme ceci (en deux colonnes cette fois, A pour les
"marqueurs", B pour les mots):
lx House
ps Nom commun
gn Maison
lx Wine
ps Nom commun
gn Vin
etc...
lx ps gn sont des marqueurs arbitraires (pour mon programme de
database, car à la fin je vais exporter ces fiches excel en format
spécial, comme du texte ou presque). NOTEZ: je dois non seulement
rajouter lx devant chaque mot anglais, et gn devant le mot français,
mais aussi insérer entre les deux une ligne avec la catégorie
grammaticale, pour ici: "nom commun" (ps = catégorie grammaticale)
je peux moi même bien sûr déplacer la colonne A vers la colonne B, et
faire des copier-collés à répétition pour ajouter dans la colonne A des
séquences de lx ps gn... mais c'est long. Et surtout, je n'ai pas moyen
d'insérer à chaque fois la ligne "ps nom commun" entre deux mots ! (j'ai
plusieurs fichiers de 2000 lignes ou plus)
Tout ce que j'ai trouvé, c'est une macro qui permet d'insérer une ligne
vide entre chaque définition pour bien les séparer. Ca donne:
House
Maison
Wine
Vin
Bottle
Bouteille
etc... La macro est la suivante:
Sub ajoutdeligne()
Dim i As Long, x As Long, lr As Long
x = ActiveSheet.UsedRange.Rows.Count
lr = ActiveCell.SpecialCells(xlLastCell).Row
If 3 > lr Then Exit Sub
If lr / 2 = Int(lr / 2) Then lr = lr + 1
For i = lr To 3 Step -2
Rows(i).EntireRow.Insert
Next i
End Sub
je ne sais pas si ça peut vous aider.
Merci encore !!!
Re, suite
J'avais ouvert le lien et squeezé la seconde partie, donc consécutivemement
phase1 et phase2 sur tableau départ:
'***
Sub phase1()
Dim c As Range
Dim test As Boolean
test = True
For Each c In [b:b].Cells
If IsEmpty(c.Offset(0, -1)) Then Exit For
If test Then
c.Value = c.Offset(0, -1)
Else
c.Value = c.Offset(-1, -1)
End If
test = Not test
Next
[a:b].Select
Selection.Sort Key1:=Range("b1")
[b:b].ClearContents
End Sub
Sub phase2()
Application.ScreenUpdating = False
Columns(1).Insert
[b65536].End(xlUp).Offset(1, -1).Select
Do While ActiveCell.Row >= 2
ActiveCell.Offset(-1, 0).Select
ActiveCell = "/gn"
ActiveCell.EntireRow.Insert
ActiveCell = "/ps"
ActiveCell.Offset(0, 1) = "Nom Commun"
ActiveCell.Offset(-1, 0).Select
ActiveCell = "/lx"
ActiveCell.EntireRow.Insert
Loop
Application.ScreenUpdating = True
End Sub
'***
'lSteph
"Mirandolle" a écrit dans le message de news:
42f4b261$0$22299$Un grand merci à vous tous pour les réponses!
La macro d'Yvan ne fait pas exactement ce que je voulais. Je ne
connaissais pas Cjoint, mais je viens d'uploader deux documents pour vous
montrer.
====> Document 1: forme de départ
(C'est une longue liste compacte et sans espace de mot anglais suivi de
son équivalent en français - je l'ai écourtée car c'est juste pour
l'exemple):
http://cjoint.com/?igppXa1zeI
Ca donne qqchose comme (tout en une colonne A):
House
Maison
Wine
Vin
Bottle
Bouteille
etc...
====> Document 2: forme d'arrivée
http://cjoint.com/?igpqw3BNgn
Ca donne qqchose comme ceci (en deux colonnes cette fois, A pour les
"marqueurs", B pour les mots):
lx House
ps Nom commun
gn Maison
lx Wine
ps Nom commun
gn Vin
etc...
lx ps gn sont des marqueurs arbitraires (pour mon programme de
database, car à la fin je vais exporter ces fiches excel en format
spécial, comme du texte ou presque). NOTEZ: je dois non seulement
rajouter lx devant chaque mot anglais, et gn devant le mot français,
mais aussi insérer entre les deux une ligne avec la catégorie
grammaticale, pour ici: "nom commun" (ps = catégorie grammaticale)
je peux moi même bien sûr déplacer la colonne A vers la colonne B, et
faire des copier-collés à répétition pour ajouter dans la colonne A des
séquences de lx ps gn... mais c'est long. Et surtout, je n'ai pas moyen
d'insérer à chaque fois la ligne "ps nom commun" entre deux mots ! (j'ai
plusieurs fichiers de 2000 lignes ou plus)
Tout ce que j'ai trouvé, c'est une macro qui permet d'insérer une ligne
vide entre chaque définition pour bien les séparer. Ca donne:
House
Maison
Wine
Vin
Bottle
Bouteille
etc... La macro est la suivante:
Sub ajoutdeligne()
Dim i As Long, x As Long, lr As Long
x = ActiveSheet.UsedRange.Rows.Count
lr = ActiveCell.SpecialCells(xlLastCell).Row
If 3 > lr Then Exit Sub
If lr / 2 = Int(lr / 2) Then lr = lr + 1
For i = lr To 3 Step -2
Rows(i).EntireRow.Insert
Next i
End Sub
je ne sais pas si ça peut vous aider.
Merci encore !!!
Re, suite
J'avais ouvert le lien et squeezé la seconde partie, donc consécutivemement
phase1 et phase2 sur tableau départ:
'***
Sub phase1()
Dim c As Range
Dim test As Boolean
test = True
For Each c In [b:b].Cells
If IsEmpty(c.Offset(0, -1)) Then Exit For
If test Then
c.Value = c.Offset(0, -1)
Else
c.Value = c.Offset(-1, -1)
End If
test = Not test
Next
[a:b].Select
Selection.Sort Key1:=Range("b1")
[b:b].ClearContents
End Sub
Sub phase2()
Application.ScreenUpdating = False
Columns(1).Insert
[b65536].End(xlUp).Offset(1, -1).Select
Do While ActiveCell.Row >= 2
ActiveCell.Offset(-1, 0).Select
ActiveCell = "/gn"
ActiveCell.EntireRow.Insert
ActiveCell = "/ps"
ActiveCell.Offset(0, 1) = "Nom Commun"
ActiveCell.Offset(-1, 0).Select
ActiveCell = "/lx"
ActiveCell.EntireRow.Insert
Loop
Application.ScreenUpdating = True
End Sub
'***
'lSteph
"Mirandolle" <user@domain.invalid> a écrit dans le message de news:
42f4b261$0$22299$8fcfb975@news.wanadoo.fr...
Un grand merci à vous tous pour les réponses!
La macro d'Yvan ne fait pas exactement ce que je voulais. Je ne
connaissais pas Cjoint, mais je viens d'uploader deux documents pour vous
montrer.
====> Document 1: forme de départ
(C'est une longue liste compacte et sans espace de mot anglais suivi de
son équivalent en français - je l'ai écourtée car c'est juste pour
l'exemple):
http://cjoint.com/?igppXa1zeI
Ca donne qqchose comme (tout en une colonne A):
House
Maison
Wine
Vin
Bottle
Bouteille
etc...
====> Document 2: forme d'arrivée
http://cjoint.com/?igpqw3BNgn
Ca donne qqchose comme ceci (en deux colonnes cette fois, A pour les
"marqueurs", B pour les mots):
lx House
ps Nom commun
gn Maison
lx Wine
ps Nom commun
gn Vin
etc...
lx ps gn sont des marqueurs arbitraires (pour mon programme de
database, car à la fin je vais exporter ces fiches excel en format
spécial, comme du texte ou presque). NOTEZ: je dois non seulement
rajouter lx devant chaque mot anglais, et gn devant le mot français,
mais aussi insérer entre les deux une ligne avec la catégorie
grammaticale, pour ici: "nom commun" (ps = catégorie grammaticale)
je peux moi même bien sûr déplacer la colonne A vers la colonne B, et
faire des copier-collés à répétition pour ajouter dans la colonne A des
séquences de lx ps gn... mais c'est long. Et surtout, je n'ai pas moyen
d'insérer à chaque fois la ligne "ps nom commun" entre deux mots ! (j'ai
plusieurs fichiers de 2000 lignes ou plus)
Tout ce que j'ai trouvé, c'est une macro qui permet d'insérer une ligne
vide entre chaque définition pour bien les séparer. Ca donne:
House
Maison
Wine
Vin
Bottle
Bouteille
etc... La macro est la suivante:
Sub ajoutdeligne()
Dim i As Long, x As Long, lr As Long
x = ActiveSheet.UsedRange.Rows.Count
lr = ActiveCell.SpecialCells(xlLastCell).Row
If 3 > lr Then Exit Sub
If lr / 2 = Int(lr / 2) Then lr = lr + 1
For i = lr To 3 Step -2
Rows(i).EntireRow.Insert
Next i
End Sub
je ne sais pas si ça peut vous aider.
Merci encore !!!
Re, suite
J'avais ouvert le lien et squeezé la seconde partie, donc consécutivemement
phase1 et phase2 sur tableau départ:
'***
Sub phase1()
Dim c As Range
Dim test As Boolean
test = True
For Each c In [b:b].Cells
If IsEmpty(c.Offset(0, -1)) Then Exit For
If test Then
c.Value = c.Offset(0, -1)
Else
c.Value = c.Offset(-1, -1)
End If
test = Not test
Next
[a:b].Select
Selection.Sort Key1:=Range("b1")
[b:b].ClearContents
End Sub
Sub phase2()
Application.ScreenUpdating = False
Columns(1).Insert
[b65536].End(xlUp).Offset(1, -1).Select
Do While ActiveCell.Row >= 2
ActiveCell.Offset(-1, 0).Select
ActiveCell = "/gn"
ActiveCell.EntireRow.Insert
ActiveCell = "/ps"
ActiveCell.Offset(0, 1) = "Nom Commun"
ActiveCell.Offset(-1, 0).Select
ActiveCell = "/lx"
ActiveCell.EntireRow.Insert
Loop
Application.ScreenUpdating = True
End Sub
'***
'lSteph
"Mirandolle" a écrit dans le message de news:
42f4b261$0$22299$Un grand merci à vous tous pour les réponses!
La macro d'Yvan ne fait pas exactement ce que je voulais. Je ne
connaissais pas Cjoint, mais je viens d'uploader deux documents pour vous
montrer.
====> Document 1: forme de départ
(C'est une longue liste compacte et sans espace de mot anglais suivi de
son équivalent en français - je l'ai écourtée car c'est juste pour
l'exemple):
http://cjoint.com/?igppXa1zeI
Ca donne qqchose comme (tout en une colonne A):
House
Maison
Wine
Vin
Bottle
Bouteille
etc...
====> Document 2: forme d'arrivée
http://cjoint.com/?igpqw3BNgn
Ca donne qqchose comme ceci (en deux colonnes cette fois, A pour les
"marqueurs", B pour les mots):
lx House
ps Nom commun
gn Maison
lx Wine
ps Nom commun
gn Vin
etc...
lx ps gn sont des marqueurs arbitraires (pour mon programme de
database, car à la fin je vais exporter ces fiches excel en format
spécial, comme du texte ou presque). NOTEZ: je dois non seulement
rajouter lx devant chaque mot anglais, et gn devant le mot français,
mais aussi insérer entre les deux une ligne avec la catégorie
grammaticale, pour ici: "nom commun" (ps = catégorie grammaticale)
je peux moi même bien sûr déplacer la colonne A vers la colonne B, et
faire des copier-collés à répétition pour ajouter dans la colonne A des
séquences de lx ps gn... mais c'est long. Et surtout, je n'ai pas moyen
d'insérer à chaque fois la ligne "ps nom commun" entre deux mots ! (j'ai
plusieurs fichiers de 2000 lignes ou plus)
Tout ce que j'ai trouvé, c'est une macro qui permet d'insérer une ligne
vide entre chaque définition pour bien les séparer. Ca donne:
House
Maison
Wine
Vin
Bottle
Bouteille
etc... La macro est la suivante:
Sub ajoutdeligne()
Dim i As Long, x As Long, lr As Long
x = ActiveSheet.UsedRange.Rows.Count
lr = ActiveCell.SpecialCells(xlLastCell).Row
If 3 > lr Then Exit Sub
If lr / 2 = Int(lr / 2) Then lr = lr + 1
For i = lr To 3 Step -2
Rows(i).EntireRow.Insert
Next i
End Sub
je ne sais pas si ça peut vous aider.
Merci encore !!!
Merci je vais l'essayer tout de suite :-)
Avec le premier je m'en sortais pas mal déjà ;-)
Merci à toi !!!
LSteph wrote:Re, suite
J'avais ouvert le lien et squeezé la seconde partie, donc
consécutivemement
phase1 et phase2 sur tableau départ:
'***
Sub phase1()
Dim c As Range
Dim test As Boolean
test = True
For Each c In [b:b].Cells
If IsEmpty(c.Offset(0, -1)) Then Exit For
If test Then
c.Value = c.Offset(0, -1)
Else
c.Value = c.Offset(-1, -1)
End If
test = Not test
Next
[a:b].Select
Selection.Sort Key1:=Range("b1")
[b:b].ClearContents
End Sub
Sub phase2()
Application.ScreenUpdating = False
Columns(1).Insert
[b65536].End(xlUp).Offset(1, -1).Select
Do While ActiveCell.Row >= 2
ActiveCell.Offset(-1, 0).Select
ActiveCell = "/gn"
ActiveCell.EntireRow.Insert
ActiveCell = "/ps"
ActiveCell.Offset(0, 1) = "Nom Commun"
ActiveCell.Offset(-1, 0).Select
ActiveCell = "/lx"
ActiveCell.EntireRow.Insert
Loop
Application.ScreenUpdating = True
End Sub
'***
'lSteph
"Mirandolle" a écrit dans le message de news:
42f4b261$0$22299$Un grand merci à vous tous pour les réponses!
La macro d'Yvan ne fait pas exactement ce que je voulais. Je ne
connaissais pas Cjoint, mais je viens d'uploader deux documents pour
vous montrer.
====> Document 1: forme de départ
(C'est une longue liste compacte et sans espace de mot anglais suivi
de son équivalent en français - je l'ai écourtée car c'est juste pour
l'exemple):
http://cjoint.com/?igppXa1zeI
Ca donne qqchose comme (tout en une colonne A):
House
Maison
Wine
Vin
Bottle
Bouteille
etc...
====> Document 2: forme d'arrivée
http://cjoint.com/?igpqw3BNgn
Ca donne qqchose comme ceci (en deux colonnes cette fois, A pour les
"marqueurs", B pour les mots):
lx House
ps Nom commun
gn Maison
lx Wine
ps Nom commun
gn Vin
etc...
lx ps gn sont des marqueurs arbitraires (pour mon programme de
database, car à la fin je vais exporter ces fiches excel en format
spécial, comme du texte ou presque). NOTEZ: je dois non seulement
rajouter lx devant chaque mot anglais, et gn devant le mot
français, mais aussi insérer entre les deux une ligne avec la
catégorie grammaticale, pour ici: "nom commun" (ps = catégorie
grammaticale)
je peux moi même bien sûr déplacer la colonne A vers la colonne B, et
faire des copier-collés à répétition pour ajouter dans la colonne A
des séquences de lx ps gn... mais c'est long. Et surtout, je n'ai
pas moyen d'insérer à chaque fois la ligne "ps nom commun" entre
deux mots ! (j'ai plusieurs fichiers de 2000 lignes ou plus)
Tout ce que j'ai trouvé, c'est une macro qui permet d'insérer une
ligne vide entre chaque définition pour bien les séparer. Ca donne:
House
Maison
Wine
Vin
Bottle
Bouteille
etc... La macro est la suivante:
Sub ajoutdeligne()
Dim i As Long, x As Long, lr As Long
x = ActiveSheet.UsedRange.Rows.Count
lr = ActiveCell.SpecialCells(xlLastCell).Row
If 3 > lr Then Exit Sub
If lr / 2 = Int(lr / 2) Then lr = lr + 1
For i = lr To 3 Step -2
Rows(i).EntireRow.Insert
Next i
End Sub
je ne sais pas si ça peut vous aider.
Merci encore !!!
Merci je vais l'essayer tout de suite :-)
Avec le premier je m'en sortais pas mal déjà ;-)
Merci à toi !!!
LSteph wrote:
Re, suite
J'avais ouvert le lien et squeezé la seconde partie, donc
consécutivemement
phase1 et phase2 sur tableau départ:
'***
Sub phase1()
Dim c As Range
Dim test As Boolean
test = True
For Each c In [b:b].Cells
If IsEmpty(c.Offset(0, -1)) Then Exit For
If test Then
c.Value = c.Offset(0, -1)
Else
c.Value = c.Offset(-1, -1)
End If
test = Not test
Next
[a:b].Select
Selection.Sort Key1:=Range("b1")
[b:b].ClearContents
End Sub
Sub phase2()
Application.ScreenUpdating = False
Columns(1).Insert
[b65536].End(xlUp).Offset(1, -1).Select
Do While ActiveCell.Row >= 2
ActiveCell.Offset(-1, 0).Select
ActiveCell = "/gn"
ActiveCell.EntireRow.Insert
ActiveCell = "/ps"
ActiveCell.Offset(0, 1) = "Nom Commun"
ActiveCell.Offset(-1, 0).Select
ActiveCell = "/lx"
ActiveCell.EntireRow.Insert
Loop
Application.ScreenUpdating = True
End Sub
'***
'lSteph
"Mirandolle" <user@domain.invalid> a écrit dans le message de news:
42f4b261$0$22299$8fcfb975@news.wanadoo.fr...
Un grand merci à vous tous pour les réponses!
La macro d'Yvan ne fait pas exactement ce que je voulais. Je ne
connaissais pas Cjoint, mais je viens d'uploader deux documents pour
vous montrer.
====> Document 1: forme de départ
(C'est une longue liste compacte et sans espace de mot anglais suivi
de son équivalent en français - je l'ai écourtée car c'est juste pour
l'exemple):
http://cjoint.com/?igppXa1zeI
Ca donne qqchose comme (tout en une colonne A):
House
Maison
Wine
Vin
Bottle
Bouteille
etc...
====> Document 2: forme d'arrivée
http://cjoint.com/?igpqw3BNgn
Ca donne qqchose comme ceci (en deux colonnes cette fois, A pour les
"marqueurs", B pour les mots):
lx House
ps Nom commun
gn Maison
lx Wine
ps Nom commun
gn Vin
etc...
lx ps gn sont des marqueurs arbitraires (pour mon programme de
database, car à la fin je vais exporter ces fiches excel en format
spécial, comme du texte ou presque). NOTEZ: je dois non seulement
rajouter lx devant chaque mot anglais, et gn devant le mot
français, mais aussi insérer entre les deux une ligne avec la
catégorie grammaticale, pour ici: "nom commun" (ps = catégorie
grammaticale)
je peux moi même bien sûr déplacer la colonne A vers la colonne B, et
faire des copier-collés à répétition pour ajouter dans la colonne A
des séquences de lx ps gn... mais c'est long. Et surtout, je n'ai
pas moyen d'insérer à chaque fois la ligne "ps nom commun" entre
deux mots ! (j'ai plusieurs fichiers de 2000 lignes ou plus)
Tout ce que j'ai trouvé, c'est une macro qui permet d'insérer une
ligne vide entre chaque définition pour bien les séparer. Ca donne:
House
Maison
Wine
Vin
Bottle
Bouteille
etc... La macro est la suivante:
Sub ajoutdeligne()
Dim i As Long, x As Long, lr As Long
x = ActiveSheet.UsedRange.Rows.Count
lr = ActiveCell.SpecialCells(xlLastCell).Row
If 3 > lr Then Exit Sub
If lr / 2 = Int(lr / 2) Then lr = lr + 1
For i = lr To 3 Step -2
Rows(i).EntireRow.Insert
Next i
End Sub
je ne sais pas si ça peut vous aider.
Merci encore !!!
Merci je vais l'essayer tout de suite :-)
Avec le premier je m'en sortais pas mal déjà ;-)
Merci à toi !!!
LSteph wrote:Re, suite
J'avais ouvert le lien et squeezé la seconde partie, donc
consécutivemement
phase1 et phase2 sur tableau départ:
'***
Sub phase1()
Dim c As Range
Dim test As Boolean
test = True
For Each c In [b:b].Cells
If IsEmpty(c.Offset(0, -1)) Then Exit For
If test Then
c.Value = c.Offset(0, -1)
Else
c.Value = c.Offset(-1, -1)
End If
test = Not test
Next
[a:b].Select
Selection.Sort Key1:=Range("b1")
[b:b].ClearContents
End Sub
Sub phase2()
Application.ScreenUpdating = False
Columns(1).Insert
[b65536].End(xlUp).Offset(1, -1).Select
Do While ActiveCell.Row >= 2
ActiveCell.Offset(-1, 0).Select
ActiveCell = "/gn"
ActiveCell.EntireRow.Insert
ActiveCell = "/ps"
ActiveCell.Offset(0, 1) = "Nom Commun"
ActiveCell.Offset(-1, 0).Select
ActiveCell = "/lx"
ActiveCell.EntireRow.Insert
Loop
Application.ScreenUpdating = True
End Sub
'***
'lSteph
"Mirandolle" a écrit dans le message de news:
42f4b261$0$22299$Un grand merci à vous tous pour les réponses!
La macro d'Yvan ne fait pas exactement ce que je voulais. Je ne
connaissais pas Cjoint, mais je viens d'uploader deux documents pour
vous montrer.
====> Document 1: forme de départ
(C'est une longue liste compacte et sans espace de mot anglais suivi
de son équivalent en français - je l'ai écourtée car c'est juste pour
l'exemple):
http://cjoint.com/?igppXa1zeI
Ca donne qqchose comme (tout en une colonne A):
House
Maison
Wine
Vin
Bottle
Bouteille
etc...
====> Document 2: forme d'arrivée
http://cjoint.com/?igpqw3BNgn
Ca donne qqchose comme ceci (en deux colonnes cette fois, A pour les
"marqueurs", B pour les mots):
lx House
ps Nom commun
gn Maison
lx Wine
ps Nom commun
gn Vin
etc...
lx ps gn sont des marqueurs arbitraires (pour mon programme de
database, car à la fin je vais exporter ces fiches excel en format
spécial, comme du texte ou presque). NOTEZ: je dois non seulement
rajouter lx devant chaque mot anglais, et gn devant le mot
français, mais aussi insérer entre les deux une ligne avec la
catégorie grammaticale, pour ici: "nom commun" (ps = catégorie
grammaticale)
je peux moi même bien sûr déplacer la colonne A vers la colonne B, et
faire des copier-collés à répétition pour ajouter dans la colonne A
des séquences de lx ps gn... mais c'est long. Et surtout, je n'ai
pas moyen d'insérer à chaque fois la ligne "ps nom commun" entre
deux mots ! (j'ai plusieurs fichiers de 2000 lignes ou plus)
Tout ce que j'ai trouvé, c'est une macro qui permet d'insérer une
ligne vide entre chaque définition pour bien les séparer. Ca donne:
House
Maison
Wine
Vin
Bottle
Bouteille
etc... La macro est la suivante:
Sub ajoutdeligne()
Dim i As Long, x As Long, lr As Long
x = ActiveSheet.UsedRange.Rows.Count
lr = ActiveCell.SpecialCells(xlLastCell).Row
If 3 > lr Then Exit Sub
If lr / 2 = Int(lr / 2) Then lr = lr + 1
For i = lr To 3 Step -2
Rows(i).EntireRow.Insert
Next i
End Sub
je ne sais pas si ça peut vous aider.
Merci encore !!!
Avec la phase 2 j'ai une erreur de débogage qui apparaît à cette ligne:
ActiveCell.Offset(-1, 0).Select
Et la première ligne (lx....) a disparu, donc cela a décallé tout le
reste :-(
Tu peux voir ce qui ne vas pas ? Au fait, si au lieu de tout faire en deux
colonnes A et B, tout était dans A, séparé par 1 simple espace, ça irait
aussi bien :-)
Merci
PS: mais bon, je peux me débrouiller avec ton autre macro (test 1 et 2),
elle marche bien :)
Mirandolle wrote:Merci je vais l'essayer tout de suite :-)
Avec le premier je m'en sortais pas mal déjà ;-)
Merci à toi !!!
LSteph wrote:Re, suite
J'avais ouvert le lien et squeezé la seconde partie, donc
consécutivemement
phase1 et phase2 sur tableau départ:
'***
Sub phase1()
Dim c As Range
Dim test As Boolean
test = True
For Each c In [b:b].Cells
If IsEmpty(c.Offset(0, -1)) Then Exit For
If test Then
c.Value = c.Offset(0, -1)
Else
c.Value = c.Offset(-1, -1)
End If
test = Not test
Next
[a:b].Select
Selection.Sort Key1:=Range("b1")
[b:b].ClearContents
End Sub
Sub phase2()
Application.ScreenUpdating = False
Columns(1).Insert
[b65536].End(xlUp).Offset(1, -1).Select
Do While ActiveCell.Row >= 2
ActiveCell.Offset(-1, 0).Select
ActiveCell = "/gn"
ActiveCell.EntireRow.Insert
ActiveCell = "/ps"
ActiveCell.Offset(0, 1) = "Nom Commun"
ActiveCell.Offset(-1, 0).Select
ActiveCell = "/lx"
ActiveCell.EntireRow.Insert
Loop
Application.ScreenUpdating = True
End Sub
'***
'lSteph
"Mirandolle" a écrit dans le message de news:
42f4b261$0$22299$Un grand merci à vous tous pour les réponses!
La macro d'Yvan ne fait pas exactement ce que je voulais. Je ne
connaissais pas Cjoint, mais je viens d'uploader deux documents pour
vous montrer.
====> Document 1: forme de départ
(C'est une longue liste compacte et sans espace de mot anglais suivi de
son équivalent en français - je l'ai écourtée car c'est juste pour
l'exemple):
http://cjoint.com/?igppXa1zeI
Ca donne qqchose comme (tout en une colonne A):
House
Maison
Wine
Vin
Bottle
Bouteille
etc...
====> Document 2: forme d'arrivée
http://cjoint.com/?igpqw3BNgn
Ca donne qqchose comme ceci (en deux colonnes cette fois, A pour les
"marqueurs", B pour les mots):
lx House
ps Nom commun
gn Maison
lx Wine
ps Nom commun
gn Vin
etc...
lx ps gn sont des marqueurs arbitraires (pour mon programme de
database, car à la fin je vais exporter ces fiches excel en format
spécial, comme du texte ou presque). NOTEZ: je dois non seulement
rajouter lx devant chaque mot anglais, et gn devant le mot français,
mais aussi insérer entre les deux une ligne avec la catégorie
grammaticale, pour ici: "nom commun" (ps = catégorie grammaticale)
je peux moi même bien sûr déplacer la colonne A vers la colonne B, et
faire des copier-collés à répétition pour ajouter dans la colonne A des
séquences de lx ps gn... mais c'est long. Et surtout, je n'ai pas
moyen d'insérer à chaque fois la ligne "ps nom commun" entre deux mots
! (j'ai plusieurs fichiers de 2000 lignes ou plus)
Tout ce que j'ai trouvé, c'est une macro qui permet d'insérer une ligne
vide entre chaque définition pour bien les séparer. Ca donne:
House
Maison
Wine
Vin
Bottle
Bouteille
etc... La macro est la suivante:
Sub ajoutdeligne()
Dim i As Long, x As Long, lr As Long
x = ActiveSheet.UsedRange.Rows.Count
lr = ActiveCell.SpecialCells(xlLastCell).Row
If 3 > lr Then Exit Sub
If lr / 2 = Int(lr / 2) Then lr = lr + 1
For i = lr To 3 Step -2
Rows(i).EntireRow.Insert
Next i
End Sub
je ne sais pas si ça peut vous aider.
Merci encore !!!
Avec la phase 2 j'ai une erreur de débogage qui apparaît à cette ligne:
ActiveCell.Offset(-1, 0).Select
Et la première ligne (lx....) a disparu, donc cela a décallé tout le
reste :-(
Tu peux voir ce qui ne vas pas ? Au fait, si au lieu de tout faire en deux
colonnes A et B, tout était dans A, séparé par 1 simple espace, ça irait
aussi bien :-)
Merci
PS: mais bon, je peux me débrouiller avec ton autre macro (test 1 et 2),
elle marche bien :)
Mirandolle wrote:
Merci je vais l'essayer tout de suite :-)
Avec le premier je m'en sortais pas mal déjà ;-)
Merci à toi !!!
LSteph wrote:
Re, suite
J'avais ouvert le lien et squeezé la seconde partie, donc
consécutivemement
phase1 et phase2 sur tableau départ:
'***
Sub phase1()
Dim c As Range
Dim test As Boolean
test = True
For Each c In [b:b].Cells
If IsEmpty(c.Offset(0, -1)) Then Exit For
If test Then
c.Value = c.Offset(0, -1)
Else
c.Value = c.Offset(-1, -1)
End If
test = Not test
Next
[a:b].Select
Selection.Sort Key1:=Range("b1")
[b:b].ClearContents
End Sub
Sub phase2()
Application.ScreenUpdating = False
Columns(1).Insert
[b65536].End(xlUp).Offset(1, -1).Select
Do While ActiveCell.Row >= 2
ActiveCell.Offset(-1, 0).Select
ActiveCell = "/gn"
ActiveCell.EntireRow.Insert
ActiveCell = "/ps"
ActiveCell.Offset(0, 1) = "Nom Commun"
ActiveCell.Offset(-1, 0).Select
ActiveCell = "/lx"
ActiveCell.EntireRow.Insert
Loop
Application.ScreenUpdating = True
End Sub
'***
'lSteph
"Mirandolle" <user@domain.invalid> a écrit dans le message de news:
42f4b261$0$22299$8fcfb975@news.wanadoo.fr...
Un grand merci à vous tous pour les réponses!
La macro d'Yvan ne fait pas exactement ce que je voulais. Je ne
connaissais pas Cjoint, mais je viens d'uploader deux documents pour
vous montrer.
====> Document 1: forme de départ
(C'est une longue liste compacte et sans espace de mot anglais suivi de
son équivalent en français - je l'ai écourtée car c'est juste pour
l'exemple):
http://cjoint.com/?igppXa1zeI
Ca donne qqchose comme (tout en une colonne A):
House
Maison
Wine
Vin
Bottle
Bouteille
etc...
====> Document 2: forme d'arrivée
http://cjoint.com/?igpqw3BNgn
Ca donne qqchose comme ceci (en deux colonnes cette fois, A pour les
"marqueurs", B pour les mots):
lx House
ps Nom commun
gn Maison
lx Wine
ps Nom commun
gn Vin
etc...
lx ps gn sont des marqueurs arbitraires (pour mon programme de
database, car à la fin je vais exporter ces fiches excel en format
spécial, comme du texte ou presque). NOTEZ: je dois non seulement
rajouter lx devant chaque mot anglais, et gn devant le mot français,
mais aussi insérer entre les deux une ligne avec la catégorie
grammaticale, pour ici: "nom commun" (ps = catégorie grammaticale)
je peux moi même bien sûr déplacer la colonne A vers la colonne B, et
faire des copier-collés à répétition pour ajouter dans la colonne A des
séquences de lx ps gn... mais c'est long. Et surtout, je n'ai pas
moyen d'insérer à chaque fois la ligne "ps nom commun" entre deux mots
! (j'ai plusieurs fichiers de 2000 lignes ou plus)
Tout ce que j'ai trouvé, c'est une macro qui permet d'insérer une ligne
vide entre chaque définition pour bien les séparer. Ca donne:
House
Maison
Wine
Vin
Bottle
Bouteille
etc... La macro est la suivante:
Sub ajoutdeligne()
Dim i As Long, x As Long, lr As Long
x = ActiveSheet.UsedRange.Rows.Count
lr = ActiveCell.SpecialCells(xlLastCell).Row
If 3 > lr Then Exit Sub
If lr / 2 = Int(lr / 2) Then lr = lr + 1
For i = lr To 3 Step -2
Rows(i).EntireRow.Insert
Next i
End Sub
je ne sais pas si ça peut vous aider.
Merci encore !!!
Avec la phase 2 j'ai une erreur de débogage qui apparaît à cette ligne:
ActiveCell.Offset(-1, 0).Select
Et la première ligne (lx....) a disparu, donc cela a décallé tout le
reste :-(
Tu peux voir ce qui ne vas pas ? Au fait, si au lieu de tout faire en deux
colonnes A et B, tout était dans A, séparé par 1 simple espace, ça irait
aussi bien :-)
Merci
PS: mais bon, je peux me débrouiller avec ton autre macro (test 1 et 2),
elle marche bien :)
Mirandolle wrote:Merci je vais l'essayer tout de suite :-)
Avec le premier je m'en sortais pas mal déjà ;-)
Merci à toi !!!
LSteph wrote:Re, suite
J'avais ouvert le lien et squeezé la seconde partie, donc
consécutivemement
phase1 et phase2 sur tableau départ:
'***
Sub phase1()
Dim c As Range
Dim test As Boolean
test = True
For Each c In [b:b].Cells
If IsEmpty(c.Offset(0, -1)) Then Exit For
If test Then
c.Value = c.Offset(0, -1)
Else
c.Value = c.Offset(-1, -1)
End If
test = Not test
Next
[a:b].Select
Selection.Sort Key1:=Range("b1")
[b:b].ClearContents
End Sub
Sub phase2()
Application.ScreenUpdating = False
Columns(1).Insert
[b65536].End(xlUp).Offset(1, -1).Select
Do While ActiveCell.Row >= 2
ActiveCell.Offset(-1, 0).Select
ActiveCell = "/gn"
ActiveCell.EntireRow.Insert
ActiveCell = "/ps"
ActiveCell.Offset(0, 1) = "Nom Commun"
ActiveCell.Offset(-1, 0).Select
ActiveCell = "/lx"
ActiveCell.EntireRow.Insert
Loop
Application.ScreenUpdating = True
End Sub
'***
'lSteph
"Mirandolle" a écrit dans le message de news:
42f4b261$0$22299$Un grand merci à vous tous pour les réponses!
La macro d'Yvan ne fait pas exactement ce que je voulais. Je ne
connaissais pas Cjoint, mais je viens d'uploader deux documents pour
vous montrer.
====> Document 1: forme de départ
(C'est une longue liste compacte et sans espace de mot anglais suivi de
son équivalent en français - je l'ai écourtée car c'est juste pour
l'exemple):
http://cjoint.com/?igppXa1zeI
Ca donne qqchose comme (tout en une colonne A):
House
Maison
Wine
Vin
Bottle
Bouteille
etc...
====> Document 2: forme d'arrivée
http://cjoint.com/?igpqw3BNgn
Ca donne qqchose comme ceci (en deux colonnes cette fois, A pour les
"marqueurs", B pour les mots):
lx House
ps Nom commun
gn Maison
lx Wine
ps Nom commun
gn Vin
etc...
lx ps gn sont des marqueurs arbitraires (pour mon programme de
database, car à la fin je vais exporter ces fiches excel en format
spécial, comme du texte ou presque). NOTEZ: je dois non seulement
rajouter lx devant chaque mot anglais, et gn devant le mot français,
mais aussi insérer entre les deux une ligne avec la catégorie
grammaticale, pour ici: "nom commun" (ps = catégorie grammaticale)
je peux moi même bien sûr déplacer la colonne A vers la colonne B, et
faire des copier-collés à répétition pour ajouter dans la colonne A des
séquences de lx ps gn... mais c'est long. Et surtout, je n'ai pas
moyen d'insérer à chaque fois la ligne "ps nom commun" entre deux mots
! (j'ai plusieurs fichiers de 2000 lignes ou plus)
Tout ce que j'ai trouvé, c'est une macro qui permet d'insérer une ligne
vide entre chaque définition pour bien les séparer. Ca donne:
House
Maison
Wine
Vin
Bottle
Bouteille
etc... La macro est la suivante:
Sub ajoutdeligne()
Dim i As Long, x As Long, lr As Long
x = ActiveSheet.UsedRange.Rows.Count
lr = ActiveCell.SpecialCells(xlLastCell).Row
If 3 > lr Then Exit Sub
If lr / 2 = Int(lr / 2) Then lr = lr + 1
For i = lr To 3 Step -2
Rows(i).EntireRow.Insert
Next i
End Sub
je ne sais pas si ça peut vous aider.
Merci encore !!!
Sur ton classeur exemple qui démarre ligne1
je n'ai pas cette erreur en lançant phase1 et phase2 consécutivement
http://cjoint.com/?igt3AnOWBy
lSteph
"Mirandolle" a écrit dans le message de news:
42f4e93f$0$917$Avec la phase 2 j'ai une erreur de débogage qui apparaît à cette ligne:
ActiveCell.Offset(-1, 0).Select
Et la première ligne (lx....) a disparu, donc cela a décallé tout le
reste :-(
Tu peux voir ce qui ne vas pas ? Au fait, si au lieu de tout faire en deux
colonnes A et B, tout était dans A, séparé par 1 simple espace, ça irait
aussi bien :-)
Merci
PS: mais bon, je peux me débrouiller avec ton autre macro (test 1 et 2),
elle marche bien :)
Mirandolle wrote:Merci je vais l'essayer tout de suite :-)
Avec le premier je m'en sortais pas mal déjà ;-)
Merci à toi !!!
LSteph wrote:Re, suite
J'avais ouvert le lien et squeezé la seconde partie, donc
consécutivemement
phase1 et phase2 sur tableau départ:
'***
Sub phase1()
Dim c As Range
Dim test As Boolean
test = True
For Each c In [b:b].Cells
If IsEmpty(c.Offset(0, -1)) Then Exit For
If test Then
c.Value = c.Offset(0, -1)
Else
c.Value = c.Offset(-1, -1)
End If
test = Not test
Next
[a:b].Select
Selection.Sort Key1:=Range("b1")
[b:b].ClearContents
End Sub
Sub phase2()
Application.ScreenUpdating = False
Columns(1).Insert
[b65536].End(xlUp).Offset(1, -1).Select
Do While ActiveCell.Row >= 2
ActiveCell.Offset(-1, 0).Select
ActiveCell = "/gn"
ActiveCell.EntireRow.Insert
ActiveCell = "/ps"
ActiveCell.Offset(0, 1) = "Nom Commun"
ActiveCell.Offset(-1, 0).Select
ActiveCell = "/lx"
ActiveCell.EntireRow.Insert
Loop
Application.ScreenUpdating = True
End Sub
'***
'lSteph
"Mirandolle" a écrit dans le message de news:
42f4b261$0$22299$Un grand merci à vous tous pour les réponses!
La macro d'Yvan ne fait pas exactement ce que je voulais. Je ne
connaissais pas Cjoint, mais je viens d'uploader deux documents pour
vous montrer.
====> Document 1: forme de départ
(C'est une longue liste compacte et sans espace de mot anglais suivi de
son équivalent en français - je l'ai écourtée car c'est juste pour
l'exemple):
http://cjoint.com/?igppXa1zeI
Ca donne qqchose comme (tout en une colonne A):
House
Maison
Wine
Vin
Bottle
Bouteille
etc...
====> Document 2: forme d'arrivée
http://cjoint.com/?igpqw3BNgn
Ca donne qqchose comme ceci (en deux colonnes cette fois, A pour les
"marqueurs", B pour les mots):
lx House
ps Nom commun
gn Maison
lx Wine
ps Nom commun
gn Vin
etc...
lx ps gn sont des marqueurs arbitraires (pour mon programme de
database, car à la fin je vais exporter ces fiches excel en format
spécial, comme du texte ou presque). NOTEZ: je dois non seulement
rajouter lx devant chaque mot anglais, et gn devant le mot français,
mais aussi insérer entre les deux une ligne avec la catégorie
grammaticale, pour ici: "nom commun" (ps = catégorie grammaticale)
je peux moi même bien sûr déplacer la colonne A vers la colonne B, et
faire des copier-collés à répétition pour ajouter dans la colonne A des
séquences de lx ps gn... mais c'est long. Et surtout, je n'ai pas
moyen d'insérer à chaque fois la ligne "ps nom commun" entre deux mots
! (j'ai plusieurs fichiers de 2000 lignes ou plus)
Tout ce que j'ai trouvé, c'est une macro qui permet d'insérer une ligne
vide entre chaque définition pour bien les séparer. Ca donne:
House
Maison
Wine
Vin
Bottle
Bouteille
etc... La macro est la suivante:
Sub ajoutdeligne()
Dim i As Long, x As Long, lr As Long
x = ActiveSheet.UsedRange.Rows.Count
lr = ActiveCell.SpecialCells(xlLastCell).Row
If 3 > lr Then Exit Sub
If lr / 2 = Int(lr / 2) Then lr = lr + 1
For i = lr To 3 Step -2
Rows(i).EntireRow.Insert
Next i
End Sub
je ne sais pas si ça peut vous aider.
Merci encore !!!
Sur ton classeur exemple qui démarre ligne1
je n'ai pas cette erreur en lançant phase1 et phase2 consécutivement
http://cjoint.com/?igt3AnOWBy
lSteph
"Mirandolle" <user@domain.invalid> a écrit dans le message de news:
42f4e93f$0$917$8fcfb975@news.wanadoo.fr...
Avec la phase 2 j'ai une erreur de débogage qui apparaît à cette ligne:
ActiveCell.Offset(-1, 0).Select
Et la première ligne (lx....) a disparu, donc cela a décallé tout le
reste :-(
Tu peux voir ce qui ne vas pas ? Au fait, si au lieu de tout faire en deux
colonnes A et B, tout était dans A, séparé par 1 simple espace, ça irait
aussi bien :-)
Merci
PS: mais bon, je peux me débrouiller avec ton autre macro (test 1 et 2),
elle marche bien :)
Mirandolle wrote:
Merci je vais l'essayer tout de suite :-)
Avec le premier je m'en sortais pas mal déjà ;-)
Merci à toi !!!
LSteph wrote:
Re, suite
J'avais ouvert le lien et squeezé la seconde partie, donc
consécutivemement
phase1 et phase2 sur tableau départ:
'***
Sub phase1()
Dim c As Range
Dim test As Boolean
test = True
For Each c In [b:b].Cells
If IsEmpty(c.Offset(0, -1)) Then Exit For
If test Then
c.Value = c.Offset(0, -1)
Else
c.Value = c.Offset(-1, -1)
End If
test = Not test
Next
[a:b].Select
Selection.Sort Key1:=Range("b1")
[b:b].ClearContents
End Sub
Sub phase2()
Application.ScreenUpdating = False
Columns(1).Insert
[b65536].End(xlUp).Offset(1, -1).Select
Do While ActiveCell.Row >= 2
ActiveCell.Offset(-1, 0).Select
ActiveCell = "/gn"
ActiveCell.EntireRow.Insert
ActiveCell = "/ps"
ActiveCell.Offset(0, 1) = "Nom Commun"
ActiveCell.Offset(-1, 0).Select
ActiveCell = "/lx"
ActiveCell.EntireRow.Insert
Loop
Application.ScreenUpdating = True
End Sub
'***
'lSteph
"Mirandolle" <user@domain.invalid> a écrit dans le message de news:
42f4b261$0$22299$8fcfb975@news.wanadoo.fr...
Un grand merci à vous tous pour les réponses!
La macro d'Yvan ne fait pas exactement ce que je voulais. Je ne
connaissais pas Cjoint, mais je viens d'uploader deux documents pour
vous montrer.
====> Document 1: forme de départ
(C'est une longue liste compacte et sans espace de mot anglais suivi de
son équivalent en français - je l'ai écourtée car c'est juste pour
l'exemple):
http://cjoint.com/?igppXa1zeI
Ca donne qqchose comme (tout en une colonne A):
House
Maison
Wine
Vin
Bottle
Bouteille
etc...
====> Document 2: forme d'arrivée
http://cjoint.com/?igpqw3BNgn
Ca donne qqchose comme ceci (en deux colonnes cette fois, A pour les
"marqueurs", B pour les mots):
lx House
ps Nom commun
gn Maison
lx Wine
ps Nom commun
gn Vin
etc...
lx ps gn sont des marqueurs arbitraires (pour mon programme de
database, car à la fin je vais exporter ces fiches excel en format
spécial, comme du texte ou presque). NOTEZ: je dois non seulement
rajouter lx devant chaque mot anglais, et gn devant le mot français,
mais aussi insérer entre les deux une ligne avec la catégorie
grammaticale, pour ici: "nom commun" (ps = catégorie grammaticale)
je peux moi même bien sûr déplacer la colonne A vers la colonne B, et
faire des copier-collés à répétition pour ajouter dans la colonne A des
séquences de lx ps gn... mais c'est long. Et surtout, je n'ai pas
moyen d'insérer à chaque fois la ligne "ps nom commun" entre deux mots
! (j'ai plusieurs fichiers de 2000 lignes ou plus)
Tout ce que j'ai trouvé, c'est une macro qui permet d'insérer une ligne
vide entre chaque définition pour bien les séparer. Ca donne:
House
Maison
Wine
Vin
Bottle
Bouteille
etc... La macro est la suivante:
Sub ajoutdeligne()
Dim i As Long, x As Long, lr As Long
x = ActiveSheet.UsedRange.Rows.Count
lr = ActiveCell.SpecialCells(xlLastCell).Row
If 3 > lr Then Exit Sub
If lr / 2 = Int(lr / 2) Then lr = lr + 1
For i = lr To 3 Step -2
Rows(i).EntireRow.Insert
Next i
End Sub
je ne sais pas si ça peut vous aider.
Merci encore !!!
Sur ton classeur exemple qui démarre ligne1
je n'ai pas cette erreur en lançant phase1 et phase2 consécutivement
http://cjoint.com/?igt3AnOWBy
lSteph
"Mirandolle" a écrit dans le message de news:
42f4e93f$0$917$Avec la phase 2 j'ai une erreur de débogage qui apparaît à cette ligne:
ActiveCell.Offset(-1, 0).Select
Et la première ligne (lx....) a disparu, donc cela a décallé tout le
reste :-(
Tu peux voir ce qui ne vas pas ? Au fait, si au lieu de tout faire en deux
colonnes A et B, tout était dans A, séparé par 1 simple espace, ça irait
aussi bien :-)
Merci
PS: mais bon, je peux me débrouiller avec ton autre macro (test 1 et 2),
elle marche bien :)
Mirandolle wrote:Merci je vais l'essayer tout de suite :-)
Avec le premier je m'en sortais pas mal déjà ;-)
Merci à toi !!!
LSteph wrote:Re, suite
J'avais ouvert le lien et squeezé la seconde partie, donc
consécutivemement
phase1 et phase2 sur tableau départ:
'***
Sub phase1()
Dim c As Range
Dim test As Boolean
test = True
For Each c In [b:b].Cells
If IsEmpty(c.Offset(0, -1)) Then Exit For
If test Then
c.Value = c.Offset(0, -1)
Else
c.Value = c.Offset(-1, -1)
End If
test = Not test
Next
[a:b].Select
Selection.Sort Key1:=Range("b1")
[b:b].ClearContents
End Sub
Sub phase2()
Application.ScreenUpdating = False
Columns(1).Insert
[b65536].End(xlUp).Offset(1, -1).Select
Do While ActiveCell.Row >= 2
ActiveCell.Offset(-1, 0).Select
ActiveCell = "/gn"
ActiveCell.EntireRow.Insert
ActiveCell = "/ps"
ActiveCell.Offset(0, 1) = "Nom Commun"
ActiveCell.Offset(-1, 0).Select
ActiveCell = "/lx"
ActiveCell.EntireRow.Insert
Loop
Application.ScreenUpdating = True
End Sub
'***
'lSteph
"Mirandolle" a écrit dans le message de news:
42f4b261$0$22299$Un grand merci à vous tous pour les réponses!
La macro d'Yvan ne fait pas exactement ce que je voulais. Je ne
connaissais pas Cjoint, mais je viens d'uploader deux documents pour
vous montrer.
====> Document 1: forme de départ
(C'est une longue liste compacte et sans espace de mot anglais suivi de
son équivalent en français - je l'ai écourtée car c'est juste pour
l'exemple):
http://cjoint.com/?igppXa1zeI
Ca donne qqchose comme (tout en une colonne A):
House
Maison
Wine
Vin
Bottle
Bouteille
etc...
====> Document 2: forme d'arrivée
http://cjoint.com/?igpqw3BNgn
Ca donne qqchose comme ceci (en deux colonnes cette fois, A pour les
"marqueurs", B pour les mots):
lx House
ps Nom commun
gn Maison
lx Wine
ps Nom commun
gn Vin
etc...
lx ps gn sont des marqueurs arbitraires (pour mon programme de
database, car à la fin je vais exporter ces fiches excel en format
spécial, comme du texte ou presque). NOTEZ: je dois non seulement
rajouter lx devant chaque mot anglais, et gn devant le mot français,
mais aussi insérer entre les deux une ligne avec la catégorie
grammaticale, pour ici: "nom commun" (ps = catégorie grammaticale)
je peux moi même bien sûr déplacer la colonne A vers la colonne B, et
faire des copier-collés à répétition pour ajouter dans la colonne A des
séquences de lx ps gn... mais c'est long. Et surtout, je n'ai pas
moyen d'insérer à chaque fois la ligne "ps nom commun" entre deux mots
! (j'ai plusieurs fichiers de 2000 lignes ou plus)
Tout ce que j'ai trouvé, c'est une macro qui permet d'insérer une ligne
vide entre chaque définition pour bien les séparer. Ca donne:
House
Maison
Wine
Vin
Bottle
Bouteille
etc... La macro est la suivante:
Sub ajoutdeligne()
Dim i As Long, x As Long, lr As Long
x = ActiveSheet.UsedRange.Rows.Count
lr = ActiveCell.SpecialCells(xlLastCell).Row
If 3 > lr Then Exit Sub
If lr / 2 = Int(lr / 2) Then lr = lr + 1
For i = lr To 3 Step -2
Rows(i).EntireRow.Insert
Next i
End Sub
je ne sais pas si ça peut vous aider.
Merci encore !!!
Je viens de réessayé et cette fois ça à marché! Pas d'erreur.
En fait, dans ma database j'arrive maintenant à retrier par ordre
alphabétique, donc j'ai juste à appliquer la phase 2 sur les listes!!!
Génial!
ENCORE MILLE FOIS MERCI LSeph !!!!!!!
Mirandolle
LSteph wrote:Sur ton classeur exemple qui démarre ligne1
je n'ai pas cette erreur en lançant phase1 et phase2 consécutivement
http://cjoint.com/?igt3AnOWBy
lSteph
"Mirandolle" a écrit dans le message de news:
42f4e93f$0$917$Avec la phase 2 j'ai une erreur de débogage qui apparaît à cette ligne:
ActiveCell.Offset(-1, 0).Select
Et la première ligne (lx....) a disparu, donc cela a décallé tout le
reste :-(
Tu peux voir ce qui ne vas pas ? Au fait, si au lieu de tout faire en
deux colonnes A et B, tout était dans A, séparé par 1 simple espace, ça
irait aussi bien :-)
Merci
PS: mais bon, je peux me débrouiller avec ton autre macro (test 1 et 2),
elle marche bien :)
Mirandolle wrote:Merci je vais l'essayer tout de suite :-)
Avec le premier je m'en sortais pas mal déjà ;-)
Merci à toi !!!
LSteph wrote:Re, suite
J'avais ouvert le lien et squeezé la seconde partie, donc
consécutivemement
phase1 et phase2 sur tableau départ:
'***
Sub phase1()
Dim c As Range
Dim test As Boolean
test = True
For Each c In [b:b].Cells
If IsEmpty(c.Offset(0, -1)) Then Exit For
If test Then
c.Value = c.Offset(0, -1)
Else
c.Value = c.Offset(-1, -1)
End If
test = Not test
Next
[a:b].Select
Selection.Sort Key1:=Range("b1")
[b:b].ClearContents
End Sub
Sub phase2()
Application.ScreenUpdating = False
Columns(1).Insert
[b65536].End(xlUp).Offset(1, -1).Select
Do While ActiveCell.Row >= 2
ActiveCell.Offset(-1, 0).Select
ActiveCell = "/gn"
ActiveCell.EntireRow.Insert
ActiveCell = "/ps"
ActiveCell.Offset(0, 1) = "Nom Commun"
ActiveCell.Offset(-1, 0).Select
ActiveCell = "/lx"
ActiveCell.EntireRow.Insert
Loop
Application.ScreenUpdating = True
End Sub
'***
'lSteph
"Mirandolle" a écrit dans le message de news:
42f4b261$0$22299$Un grand merci à vous tous pour les réponses!
La macro d'Yvan ne fait pas exactement ce que je voulais. Je ne
connaissais pas Cjoint, mais je viens d'uploader deux documents pour
vous montrer.
====> Document 1: forme de départ
(C'est une longue liste compacte et sans espace de mot anglais suivi
de son équivalent en français - je l'ai écourtée car c'est juste pour
l'exemple):
http://cjoint.com/?igppXa1zeI
Ca donne qqchose comme (tout en une colonne A):
House
Maison
Wine
Vin
Bottle
Bouteille
etc...
====> Document 2: forme d'arrivée
http://cjoint.com/?igpqw3BNgn
Ca donne qqchose comme ceci (en deux colonnes cette fois, A pour les
"marqueurs", B pour les mots):
lx House
ps Nom commun
gn Maison
lx Wine
ps Nom commun
gn Vin
etc...
lx ps gn sont des marqueurs arbitraires (pour mon programme de
database, car à la fin je vais exporter ces fiches excel en format
spécial, comme du texte ou presque). NOTEZ: je dois non seulement
rajouter lx devant chaque mot anglais, et gn devant le mot français,
mais aussi insérer entre les deux une ligne avec la catégorie
grammaticale, pour ici: "nom commun" (ps = catégorie grammaticale)
je peux moi même bien sûr déplacer la colonne A vers la colonne B, et
faire des copier-collés à répétition pour ajouter dans la colonne A
des séquences de lx ps gn... mais c'est long. Et surtout, je n'ai
pas moyen d'insérer à chaque fois la ligne "ps nom commun" entre deux
mots ! (j'ai plusieurs fichiers de 2000 lignes ou plus)
Tout ce que j'ai trouvé, c'est une macro qui permet d'insérer une
ligne vide entre chaque définition pour bien les séparer. Ca donne:
House
Maison
Wine
Vin
Bottle
Bouteille
etc... La macro est la suivante:
Sub ajoutdeligne()
Dim i As Long, x As Long, lr As Long
x = ActiveSheet.UsedRange.Rows.Count
lr = ActiveCell.SpecialCells(xlLastCell).Row
If 3 > lr Then Exit Sub
If lr / 2 = Int(lr / 2) Then lr = lr + 1
For i = lr To 3 Step -2
Rows(i).EntireRow.Insert
Next i
End Sub
je ne sais pas si ça peut vous aider.
Merci encore !!!
Je viens de réessayé et cette fois ça à marché! Pas d'erreur.
En fait, dans ma database j'arrive maintenant à retrier par ordre
alphabétique, donc j'ai juste à appliquer la phase 2 sur les listes!!!
Génial!
ENCORE MILLE FOIS MERCI LSeph !!!!!!!
Mirandolle
LSteph wrote:
Sur ton classeur exemple qui démarre ligne1
je n'ai pas cette erreur en lançant phase1 et phase2 consécutivement
http://cjoint.com/?igt3AnOWBy
lSteph
"Mirandolle" <user@domain.invalid> a écrit dans le message de news:
42f4e93f$0$917$8fcfb975@news.wanadoo.fr...
Avec la phase 2 j'ai une erreur de débogage qui apparaît à cette ligne:
ActiveCell.Offset(-1, 0).Select
Et la première ligne (lx....) a disparu, donc cela a décallé tout le
reste :-(
Tu peux voir ce qui ne vas pas ? Au fait, si au lieu de tout faire en
deux colonnes A et B, tout était dans A, séparé par 1 simple espace, ça
irait aussi bien :-)
Merci
PS: mais bon, je peux me débrouiller avec ton autre macro (test 1 et 2),
elle marche bien :)
Mirandolle wrote:
Merci je vais l'essayer tout de suite :-)
Avec le premier je m'en sortais pas mal déjà ;-)
Merci à toi !!!
LSteph wrote:
Re, suite
J'avais ouvert le lien et squeezé la seconde partie, donc
consécutivemement
phase1 et phase2 sur tableau départ:
'***
Sub phase1()
Dim c As Range
Dim test As Boolean
test = True
For Each c In [b:b].Cells
If IsEmpty(c.Offset(0, -1)) Then Exit For
If test Then
c.Value = c.Offset(0, -1)
Else
c.Value = c.Offset(-1, -1)
End If
test = Not test
Next
[a:b].Select
Selection.Sort Key1:=Range("b1")
[b:b].ClearContents
End Sub
Sub phase2()
Application.ScreenUpdating = False
Columns(1).Insert
[b65536].End(xlUp).Offset(1, -1).Select
Do While ActiveCell.Row >= 2
ActiveCell.Offset(-1, 0).Select
ActiveCell = "/gn"
ActiveCell.EntireRow.Insert
ActiveCell = "/ps"
ActiveCell.Offset(0, 1) = "Nom Commun"
ActiveCell.Offset(-1, 0).Select
ActiveCell = "/lx"
ActiveCell.EntireRow.Insert
Loop
Application.ScreenUpdating = True
End Sub
'***
'lSteph
"Mirandolle" <user@domain.invalid> a écrit dans le message de news:
42f4b261$0$22299$8fcfb975@news.wanadoo.fr...
Un grand merci à vous tous pour les réponses!
La macro d'Yvan ne fait pas exactement ce que je voulais. Je ne
connaissais pas Cjoint, mais je viens d'uploader deux documents pour
vous montrer.
====> Document 1: forme de départ
(C'est une longue liste compacte et sans espace de mot anglais suivi
de son équivalent en français - je l'ai écourtée car c'est juste pour
l'exemple):
http://cjoint.com/?igppXa1zeI
Ca donne qqchose comme (tout en une colonne A):
House
Maison
Wine
Vin
Bottle
Bouteille
etc...
====> Document 2: forme d'arrivée
http://cjoint.com/?igpqw3BNgn
Ca donne qqchose comme ceci (en deux colonnes cette fois, A pour les
"marqueurs", B pour les mots):
lx House
ps Nom commun
gn Maison
lx Wine
ps Nom commun
gn Vin
etc...
lx ps gn sont des marqueurs arbitraires (pour mon programme de
database, car à la fin je vais exporter ces fiches excel en format
spécial, comme du texte ou presque). NOTEZ: je dois non seulement
rajouter lx devant chaque mot anglais, et gn devant le mot français,
mais aussi insérer entre les deux une ligne avec la catégorie
grammaticale, pour ici: "nom commun" (ps = catégorie grammaticale)
je peux moi même bien sûr déplacer la colonne A vers la colonne B, et
faire des copier-collés à répétition pour ajouter dans la colonne A
des séquences de lx ps gn... mais c'est long. Et surtout, je n'ai
pas moyen d'insérer à chaque fois la ligne "ps nom commun" entre deux
mots ! (j'ai plusieurs fichiers de 2000 lignes ou plus)
Tout ce que j'ai trouvé, c'est une macro qui permet d'insérer une
ligne vide entre chaque définition pour bien les séparer. Ca donne:
House
Maison
Wine
Vin
Bottle
Bouteille
etc... La macro est la suivante:
Sub ajoutdeligne()
Dim i As Long, x As Long, lr As Long
x = ActiveSheet.UsedRange.Rows.Count
lr = ActiveCell.SpecialCells(xlLastCell).Row
If 3 > lr Then Exit Sub
If lr / 2 = Int(lr / 2) Then lr = lr + 1
For i = lr To 3 Step -2
Rows(i).EntireRow.Insert
Next i
End Sub
je ne sais pas si ça peut vous aider.
Merci encore !!!
Je viens de réessayé et cette fois ça à marché! Pas d'erreur.
En fait, dans ma database j'arrive maintenant à retrier par ordre
alphabétique, donc j'ai juste à appliquer la phase 2 sur les listes!!!
Génial!
ENCORE MILLE FOIS MERCI LSeph !!!!!!!
Mirandolle
LSteph wrote:Sur ton classeur exemple qui démarre ligne1
je n'ai pas cette erreur en lançant phase1 et phase2 consécutivement
http://cjoint.com/?igt3AnOWBy
lSteph
"Mirandolle" a écrit dans le message de news:
42f4e93f$0$917$Avec la phase 2 j'ai une erreur de débogage qui apparaît à cette ligne:
ActiveCell.Offset(-1, 0).Select
Et la première ligne (lx....) a disparu, donc cela a décallé tout le
reste :-(
Tu peux voir ce qui ne vas pas ? Au fait, si au lieu de tout faire en
deux colonnes A et B, tout était dans A, séparé par 1 simple espace, ça
irait aussi bien :-)
Merci
PS: mais bon, je peux me débrouiller avec ton autre macro (test 1 et 2),
elle marche bien :)
Mirandolle wrote:Merci je vais l'essayer tout de suite :-)
Avec le premier je m'en sortais pas mal déjà ;-)
Merci à toi !!!
LSteph wrote:Re, suite
J'avais ouvert le lien et squeezé la seconde partie, donc
consécutivemement
phase1 et phase2 sur tableau départ:
'***
Sub phase1()
Dim c As Range
Dim test As Boolean
test = True
For Each c In [b:b].Cells
If IsEmpty(c.Offset(0, -1)) Then Exit For
If test Then
c.Value = c.Offset(0, -1)
Else
c.Value = c.Offset(-1, -1)
End If
test = Not test
Next
[a:b].Select
Selection.Sort Key1:=Range("b1")
[b:b].ClearContents
End Sub
Sub phase2()
Application.ScreenUpdating = False
Columns(1).Insert
[b65536].End(xlUp).Offset(1, -1).Select
Do While ActiveCell.Row >= 2
ActiveCell.Offset(-1, 0).Select
ActiveCell = "/gn"
ActiveCell.EntireRow.Insert
ActiveCell = "/ps"
ActiveCell.Offset(0, 1) = "Nom Commun"
ActiveCell.Offset(-1, 0).Select
ActiveCell = "/lx"
ActiveCell.EntireRow.Insert
Loop
Application.ScreenUpdating = True
End Sub
'***
'lSteph
"Mirandolle" a écrit dans le message de news:
42f4b261$0$22299$Un grand merci à vous tous pour les réponses!
La macro d'Yvan ne fait pas exactement ce que je voulais. Je ne
connaissais pas Cjoint, mais je viens d'uploader deux documents pour
vous montrer.
====> Document 1: forme de départ
(C'est une longue liste compacte et sans espace de mot anglais suivi
de son équivalent en français - je l'ai écourtée car c'est juste pour
l'exemple):
http://cjoint.com/?igppXa1zeI
Ca donne qqchose comme (tout en une colonne A):
House
Maison
Wine
Vin
Bottle
Bouteille
etc...
====> Document 2: forme d'arrivée
http://cjoint.com/?igpqw3BNgn
Ca donne qqchose comme ceci (en deux colonnes cette fois, A pour les
"marqueurs", B pour les mots):
lx House
ps Nom commun
gn Maison
lx Wine
ps Nom commun
gn Vin
etc...
lx ps gn sont des marqueurs arbitraires (pour mon programme de
database, car à la fin je vais exporter ces fiches excel en format
spécial, comme du texte ou presque). NOTEZ: je dois non seulement
rajouter lx devant chaque mot anglais, et gn devant le mot français,
mais aussi insérer entre les deux une ligne avec la catégorie
grammaticale, pour ici: "nom commun" (ps = catégorie grammaticale)
je peux moi même bien sûr déplacer la colonne A vers la colonne B, et
faire des copier-collés à répétition pour ajouter dans la colonne A
des séquences de lx ps gn... mais c'est long. Et surtout, je n'ai
pas moyen d'insérer à chaque fois la ligne "ps nom commun" entre deux
mots ! (j'ai plusieurs fichiers de 2000 lignes ou plus)
Tout ce que j'ai trouvé, c'est une macro qui permet d'insérer une
ligne vide entre chaque définition pour bien les séparer. Ca donne:
House
Maison
Wine
Vin
Bottle
Bouteille
etc... La macro est la suivante:
Sub ajoutdeligne()
Dim i As Long, x As Long, lr As Long
x = ActiveSheet.UsedRange.Rows.Count
lr = ActiveCell.SpecialCells(xlLastCell).Row
If 3 > lr Then Exit Sub
If lr / 2 = Int(lr / 2) Then lr = lr + 1
For i = lr To 3 Step -2
Rows(i).EntireRow.Insert
Next i
End Sub
je ne sais pas si ça peut vous aider.
Merci encore !!!