Comparer des cellules et concatener selon une condition
5 réponses
bac
Bonjour, Bonsoir
J'ai une plage de cellules contenant des noms . ( 60 lignes et 12 colonnes
environs)
j aimerai comparer chaque cellule de cette plage avec les cellules d'une
colonne bien definie puis:
si la cellule se trouve en doublon dans cette colonne alors rajouter par
concatenation a cette cellule la valeur numerique de la
colonne precedente ( et de la même ligne)
par exemple, ci dessous , pour la plage (A1:C3) je veux lire toutes les
cellules et les remplacer par la valeur en D (numerique)
concatenée de sa propre valeur en colonne E
A B C D E
titi tata tutu 2 titi
tata titi tutu 3 tata
tata titi titi 1 toto
devrai donner :
A B C D E
2titi 3tata 1tutu 2 titi
3tata 2titi 1tutu 3 tata
3tata 2titi 1toto 1 toto
Ou , dit differemment, coller dans tout le tableau , a titi la valeur 2 (
2titi), tata la valeur 3 ( donc 3tata) et toto la valeur1
Les résultat attendus ne me paraissent pas en cohérence avec la demande...
http://cjoint.com/?kEiXRgvZcg
AV
bac
Bonjour AV
Merci pour la réponse .
Ce programme joint fonctionne bien . Simplement dans ma liste il y a une eventualité que je n'avais pas prévu au départ, des cases vides disposées de façon aléatoire a chaque ligne et colonne. Ceci stop net le programme ( Incompatibilité de type) Pour corriger, j'ai écrit une petite macro qui comble toutes les cases vides par un point avant d'effectuer le calcul ( for, next) et cela prend 25 secondes environs a chaque calcul. ( 600 lignes 15 colonnes environs).
y a-il une facon plus élégante et plus rapide pour effectuer le tri sans devoir passer cet artifice qui consiste a combler les cases vides ?
Merci !
"" AV a écrit ""
Les résultat attendus ne me paraissent pas en cohérence avec la demande...
http://cjoint.com/?kEiXRgvZcg
AV
"bac" a écrit dans le message de news:454514c8$0$5090$
Bonjour, Bonsoir
J'ai une plage de cellules contenant des noms . ( 60 lignes et 12 colonnes environs) j aimerai comparer chaque cellule de cette plage avec les cellules d'une colonne bien definie puis: si la cellule se trouve en doublon dans cette colonne alors rajouter par concatenation a cette cellule la valeur numerique de la colonne precedente ( et de la même ligne) par exemple, ci dessous , pour la plage (A1:C3) je veux lire toutes les cellules et les remplacer par la valeur en D (numerique) concatenée de sa propre valeur en colonne E
A B C D E titi tata tutu 2 titi tata titi tutu 3 tata tata titi titi 1 toto
devrai donner :
A B C D E 2titi 3tata 1tutu 2 titi 3tata 2titi 1tutu 3 tata 3tata 2titi 1toto 1 toto
Ou , dit differemment, coller dans tout le tableau , a titi la valeur 2 ( 2titi), tata la valeur 3 ( donc 3tata) et toto la valeur1
En esperant m'être exprimé clairement .
merci
Bonjour AV
Merci pour la réponse .
Ce programme joint fonctionne bien .
Simplement dans ma liste il y a une eventualité que je n'avais pas prévu au
départ, des cases vides disposées de façon aléatoire a chaque ligne et
colonne.
Ceci stop net le programme ( Incompatibilité de type)
Pour corriger, j'ai écrit une petite macro qui comble toutes les cases vides
par un point avant d'effectuer le calcul ( for, next) et
cela prend 25 secondes environs a chaque calcul. ( 600 lignes 15 colonnes
environs).
y a-il une facon plus élégante et plus rapide pour effectuer le tri sans
devoir passer cet artifice qui consiste a combler les cases vides ?
Merci !
"" AV a écrit ""
Les résultat attendus ne me paraissent pas en cohérence avec la demande...
http://cjoint.com/?kEiXRgvZcg
AV
"bac" <bac@ooo> a écrit dans le message de
news:454514c8$0$5090$ba4acef3@news.orange.fr...
Bonjour, Bonsoir
J'ai une plage de cellules contenant des noms . ( 60 lignes et 12 colonnes
environs)
j aimerai comparer chaque cellule de cette plage avec les cellules d'une
colonne bien definie puis:
si la cellule se trouve en doublon dans cette colonne alors rajouter par
concatenation a cette cellule la valeur numerique de la
colonne precedente ( et de la même ligne)
par exemple, ci dessous , pour la plage (A1:C3) je veux lire toutes les
cellules et les remplacer par la valeur en D (numerique)
concatenée de sa propre valeur en colonne E
A B C D E
titi tata tutu 2 titi
tata titi tutu 3 tata
tata titi titi 1 toto
devrai donner :
A B C D E
2titi 3tata 1tutu 2 titi
3tata 2titi 1tutu 3 tata
3tata 2titi 1toto 1 toto
Ou , dit differemment, coller dans tout le tableau , a titi la valeur 2 (
2titi), tata la valeur 3 ( donc 3tata) et toto la valeur1
Ce programme joint fonctionne bien . Simplement dans ma liste il y a une eventualité que je n'avais pas prévu au départ, des cases vides disposées de façon aléatoire a chaque ligne et colonne. Ceci stop net le programme ( Incompatibilité de type) Pour corriger, j'ai écrit une petite macro qui comble toutes les cases vides par un point avant d'effectuer le calcul ( for, next) et cela prend 25 secondes environs a chaque calcul. ( 600 lignes 15 colonnes environs).
y a-il une facon plus élégante et plus rapide pour effectuer le tri sans devoir passer cet artifice qui consiste a combler les cases vides ?
Merci !
"" AV a écrit ""
Les résultat attendus ne me paraissent pas en cohérence avec la demande...
http://cjoint.com/?kEiXRgvZcg
AV
"bac" a écrit dans le message de news:454514c8$0$5090$
Bonjour, Bonsoir
J'ai une plage de cellules contenant des noms . ( 60 lignes et 12 colonnes environs) j aimerai comparer chaque cellule de cette plage avec les cellules d'une colonne bien definie puis: si la cellule se trouve en doublon dans cette colonne alors rajouter par concatenation a cette cellule la valeur numerique de la colonne precedente ( et de la même ligne) par exemple, ci dessous , pour la plage (A1:C3) je veux lire toutes les cellules et les remplacer par la valeur en D (numerique) concatenée de sa propre valeur en colonne E
A B C D E titi tata tutu 2 titi tata titi tutu 3 tata tata titi titi 1 toto
devrai donner :
A B C D E 2titi 3tata 1tutu 2 titi 3tata 2titi 1tutu 3 tata 3tata 2titi 1toto 1 toto
Ou , dit differemment, coller dans tout le tableau , a titi la valeur 2 ( 2titi), tata la valeur 3 ( donc 3tata) et toto la valeur1
En esperant m'être exprimé clairement .
merci
AV
Ceci stop net le programme ( Incompatibilité de type)
Ajoute cette instruction juste avant la ligne qui plante :
On Error Resume Next
Au final la macro doit être :
Sub concaT() derL = [A:C].Find("*", , , , xlByRows, xlPrevious).Row For Each c In Range("A1:C" & derL) On Error Resume Next c.Value = Application.Index([valNum], Application.Match(c, [Noms], 0)) & c Next End Sub
AV
Ceci stop net le programme ( Incompatibilité de type)
Ajoute cette instruction juste avant la ligne qui plante :
On Error Resume Next
Au final la macro doit être :
Sub concaT()
derL = [A:C].Find("*", , , , xlByRows, xlPrevious).Row
For Each c In Range("A1:C" & derL)
On Error Resume Next
c.Value = Application.Index([valNum], Application.Match(c, [Noms], 0)) & c
Next
End Sub
Ceci stop net le programme ( Incompatibilité de type)
Ajoute cette instruction juste avant la ligne qui plante :
On Error Resume Next
Au final la macro doit être :
Sub concaT() derL = [A:C].Find("*", , , , xlByRows, xlPrevious).Row For Each c In Range("A1:C" & derL) On Error Resume Next c.Value = Application.Index([valNum], Application.Match(c, [Noms], 0)) & c Next End Sub
AV
bac
Bonjour
Merci de ta reponse "AV". L'instruction "on error" ne resoud pas mon problème. Il n'y a certes pas de messages d'erreurs mais le traitement ne prends pas en charge les cellules vides et la concatenation s'arrete dès la premiere cellule vide rencontrée.
"AV" a écrit dans le message de news:%23uCVXqP$
Ceci stop net le programme ( Incompatibilité de type)
Ajoute cette instruction juste avant la ligne qui plante :
On Error Resume Next
Au final la macro doit être :
Sub concaT() derL = [A:C].Find("*", , , , xlByRows, xlPrevious).Row For Each c In Range("A1:C" & derL) On Error Resume Next c.Value = Application.Index([valNum], Application.Match(c, [Noms], 0)) & c
Next End Sub
AV
Bonjour
Merci de ta reponse "AV".
L'instruction "on error" ne resoud pas mon problème. Il n'y a certes pas de
messages d'erreurs mais le traitement ne prends pas en charge les cellules
vides et la concatenation s'arrete dès la premiere cellule vide rencontrée.
"AV" <alainPFFFvallon@wanadoo.fr> a écrit dans le message de
news:%23uCVXqP$GHA.4740@TK2MSFTNGP03.phx.gbl...
Ceci stop net le programme ( Incompatibilité de type)
Ajoute cette instruction juste avant la ligne qui plante :
On Error Resume Next
Au final la macro doit être :
Sub concaT()
derL = [A:C].Find("*", , , , xlByRows, xlPrevious).Row
For Each c In Range("A1:C" & derL)
On Error Resume Next
c.Value = Application.Index([valNum], Application.Match(c, [Noms],
0)) & c
Merci de ta reponse "AV". L'instruction "on error" ne resoud pas mon problème. Il n'y a certes pas de messages d'erreurs mais le traitement ne prends pas en charge les cellules vides et la concatenation s'arrete dès la premiere cellule vide rencontrée.
"AV" a écrit dans le message de news:%23uCVXqP$
Ceci stop net le programme ( Incompatibilité de type)
Ajoute cette instruction juste avant la ligne qui plante :
On Error Resume Next
Au final la macro doit être :
Sub concaT() derL = [A:C].Find("*", , , , xlByRows, xlPrevious).Row For Each c In Range("A1:C" & derL) On Error Resume Next c.Value = Application.Index([valNum], Application.Match(c, [Noms], 0)) & c
Next End Sub
AV
AV
L'instruction "on error" ne resoud pas mon problème. Il n'y a certes pas de messages d'erreurs mais le traitement ne prends pas en charge les cellules vides et la concatenation s'arrete dès la premiere cellule vide rencontrée.
Je ne constate pas du tout ce problème ! http://cjoint.com/?ldpCyROnCp
AV
L'instruction "on error" ne resoud pas mon problème. Il n'y a certes pas de
messages d'erreurs mais le traitement ne prends pas en charge les cellules
vides et la concatenation s'arrete dès la premiere cellule vide rencontrée.
Je ne constate pas du tout ce problème !
http://cjoint.com/?ldpCyROnCp
L'instruction "on error" ne resoud pas mon problème. Il n'y a certes pas de messages d'erreurs mais le traitement ne prends pas en charge les cellules vides et la concatenation s'arrete dès la premiere cellule vide rencontrée.
Je ne constate pas du tout ce problème ! http://cjoint.com/?ldpCyROnCp