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

Endroit précis dans une cellule

6 réponses
Avatar
Denys
Bonjour =E0 tous,

Petite =E9nigme pour vous...... Je voudrais "concatener" le contenu de
diff=E9rentes cellules, mais voudrais que ce contenu s'inscrive =E0 un
endroit pr=E9cis 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=E9sultat je voudrais en A3 et A4 respectivement:

1 Pierre Rue de Paris
123 Claude Rue Lanouette

Voici o=F9 j'en suis:

ActiveCell.Formula =3D "=3DLEFT(A1&REPT("" "",11),11)&LEFT(B1&REPT("" "",
11),11)&LEFT(C1&REPT("" "",2),9)"

Le probl=E8me c'est quand en A1 le nombre n'a qu'un chiffre, tout le
reste est d=E9cal=E9... et =E7a va de m=EAme avec les pr=E9noms et adresse.=
....

Coment s'assurer que chaque d=E9but de cellule "concaten=E9e" d=E9bute au
m=EAme endroit ?

Pas =E9vident...

Merci pour votre temps

Denys

6 réponses

Avatar
Jacquouille
Bonjour
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
Avatar
Denys
Bonjour Jacquouille,

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
Avatar
LSteph
Bonjour,


Si tes Chiffres peuvent aller de 1 à 9999 (au pire)
je mettrais format(a1,"0000")

--
LSteph


"Denys" a écrit dans le message de
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
Avatar
GL
Le 31/05/2013 16:02, Denys a écrit :
Bonjour Jacquouille,

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




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.
Avatar
DanielCo
Bonjour,

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


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
Avatar
Denys
Bonjour Daniel et GL,

Merci beaucoup pour vos suggestions.....je vais les conserver....

Denys

On Jun 1, 4:56 am, DanielCo wrote:
Bonjour,

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



> 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- Hide quoted text -

- Show quoted text -