Endroit précis dans une cellule
Le
Denys

Bonjour à tous,
Petite énigme pour vous Je voudrais "concatener" le contenu de
différentes cellules, mais voudrais que ce contenu s'inscrive à un
endroit précis dans une cellule..par exemple:
En A1 j'ai 1 en B1 j'ai Pierre en C1 j'ai Rue de Paris
En A2 j'ai 123 en B2 j'ai Claude en C2 j'ai Rue Lanouette
Alors, comme résultat je voudrais en A3 et A4 respectivement:
1 Pierre Rue de Paris
123 Claude Rue Lanouette
Voici où j'en suis:
ActiveCell.Formula = "=LEFT(A1&REPT("" "",11),11)&LEFT(B1&REPT("" "",
11),11)&LEFT(C1&REPT("" "",2),9)"
Le problème c'est quand en A1 le nombre n'a qu'un chiffre, tout le
reste est décalé et ça va de même avec les prénoms et adresse.=
.
Coment s'assurer que chaque début de cellule "concatenée" débute au
même endroit ?
Pas évident
Merci pour votre temps
Denys
Petite énigme pour vous Je voudrais "concatener" le contenu de
différentes cellules, mais voudrais que ce contenu s'inscrive à un
endroit précis dans une cellule..par exemple:
En A1 j'ai 1 en B1 j'ai Pierre en C1 j'ai Rue de Paris
En A2 j'ai 123 en B2 j'ai Claude en C2 j'ai Rue Lanouette
Alors, comme résultat je voudrais en A3 et A4 respectivement:
1 Pierre Rue de Paris
123 Claude Rue Lanouette
Voici où j'en suis:
ActiveCell.Formula = "=LEFT(A1&REPT("" "",11),11)&LEFT(B1&REPT("" "",
11),11)&LEFT(C1&REPT("" "",2),9)"
Le problème c'est quand en A1 le nombre n'a qu'un chiffre, tout le
reste est décalé et ça va de même avec les prénoms et adresse.=
.
Coment s'assurer que chaque début de cellule "concatenée" débute au
même endroit ?
Pas évident
Merci pour votre temps
Denys
Un simple ¡&" "&B1&" "&C1 ne suffirait pas ?
Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"Denys" a écrit dans le message de groupe de discussion :
Bonjour à tous,
Petite énigme pour vous...... Je voudrais "concatener" le contenu de
différentes cellules, mais voudrais que ce contenu s'inscrive à un
endroit précis dans une cellule.....par exemple:
En A1 j'ai 1 en B1 j'ai Pierre en C1 j'ai Rue de Paris
En A2 j'ai 123 en B2 j'ai Claude en C2 j'ai Rue Lanouette
Alors, comme résultat je voudrais en A3 et A4 respectivement:
1 Pierre Rue de Paris
123 Claude Rue Lanouette
Voici où j'en suis:
ActiveCell.Formula = "=LEFT(A1&REPT("" "",11),11)&LEFT(B1&REPT("" "",
11),11)&LEFT(C1&REPT("" "",2),9)"
Le problème c'est quand en A1 le nombre n'a qu'un chiffre, tout le
reste est décalé... et ça va de même avec les prénoms et adresse.....
Coment s'assurer que chaque début de cellule "concatenée" débute au
même endroit ?
Pas évident...
Merci pour votre temps
Denys
Non.....mais laissez tomber, je vais m'y prendre autrement car il y a
trop de variable.....(il vient de s'en rajouter d'autres)
Merci bien
Denys
Si tes Chiffres peuvent aller de 1 à 9999 (au pire)
je mettrais format(a1,"0000")
--
LSteph
"Denys" news:
Bonjour à tous,
Petite énigme pour vous...... Je voudrais "concatener" le contenu de
différentes cellules, mais voudrais que ce contenu s'inscrive à un
endroit précis dans une cellule.....par exemple:
En A1 j'ai 1 en B1 j'ai Pierre en C1 j'ai Rue de Paris
En A2 j'ai 123 en B2 j'ai Claude en C2 j'ai Rue Lanouette
Alors, comme résultat je voudrais en A3 et A4 respectivement:
1 Pierre Rue de Paris
123 Claude Rue Lanouette
Voici où j'en suis:
ActiveCell.Formula = "=LEFT(A1&REPT("" "",11),11)&LEFT(B1&REPT("" "",
11),11)&LEFT(C1&REPT("" "",2),9)"
Le problème c'est quand en A1 le nombre n'a qu'un chiffre, tout le
reste est décalé... et ça va de même avec les prénoms et adresse.....
Coment s'assurer que chaque début de cellule "concatenée" débute au
même endroit ?
Pas évident...
Merci pour votre temps
Denys
Moi j'utilise une fonction IMPLODE (équivalent de php implode)
qui concatène un tableau avec des séparateurs.
= IMPLODE(tableau;séparateur)
le séparateur est optionnel (par défaut il n'y en a pas).
Pour le décalage vous pouvez utiliser par exemple :
SI(A1 < 10 ; " " ; "" ) & SI( A1 < 100 ; " " ; "" )
et utiliser une police à chasse fixe (courier new par exemple).
Pour info je vous en donne gracieusement le code :
Public Function IMPLODE(R, Optional sep$ = vbNullString)
Dim i&, j&, row&, Col&, res$
If TypeOf R Is Range Then R = R.Value
row = UBound(R, 1)
On Error Resume Next: Col = UBound(R, 2): On Error GoTo 0
If Col > 0 Then
For i = 1 To row
For j = 1 To Col
If IsError(R(i, j)) Then GoTo Nextj
If IsEmpty(R(i, j)) Then GoTo Nextj
If R(i, j) = vbNullString Then GoTo Nextj
res = res & sep & R(i, j)
Nextj:
Next j
Next i
Else
For i = 1 To row
If IsError(R(i)) Then GoTo Nexti
If IsEmpty(R(i)) Then GoTo Nexti
If R(i) = vbNullString Then GoTo Nexti
res = res & sep & R(i)
Nexti:
Next i
End If
If res = vbNullString Then IMPLODE = vbNullString: Exit Function
IMPLODE = Mid(res, Len(sep) + 1, Len(res))
End Function
Cela donne par exemple :
=SI(A1<10;" ";"") & SI(A1<100;" ";"") & IMPLODE(A1:C1;" ")
Cordialement.
Pour des champs de 8 et 15 caractères :
=TEXTE(A4;"#")&REPT(" ";8-NBCAR(TEXTE(A4;"#")))&B4&REPT("
";15-NBCAR(C4))&C4
Il ne doit pas y avoir de dépassement, sinon :
=GAUCHE(TEXTE(A4;"#");8)&REPT("
";8-NBCAR(GAUCHE(TEXTE(A4;"#");8)))&GAUCHE(B4;15)&REPT("
";15-NBCAR(GAUCHE(B4;15)))&C4
On peut aussi limiter la longueur 3e champ.
Daniel
Merci beaucoup pour vos suggestions.....je vais les conserver....
Denys
On Jun 1, 4:56 am, DanielCo