[EXCEL] Infos colonne en ligne avec ;

Résolu/Fermé
pissdrunk Messages postés 65 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 12 août 2009 - 11 août 2009 à 10:57
 bol-2-riz - 13 nov. 2009 à 11:39
Bonjour,

Je souhaiterais sous Excel pouvoir mettre des infos en colonne en ligne (100 valeurs par ligne séparées par des ";") :

Exemple :

Au départ on a dans la colonne A les infos suivantes :

Ordinateur
Voiture
Choucroutte
Frigo
Budget

Je voudrais donc obtenir : Ordinateur;Voiture;Choucroutte;Frigo;Budget

A savoir que s'il y a 245 valeurs en tout avoir 3 lignes au total (deux lignes avec 100 valeur et la dernière avec les 45 restantes...)

Je ne sais pas si je suis assez clair !

Merci en tout cas de me venir en aide !

Cordialement,

Jean.
A voir également:

12 réponses

tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
11 août 2009 à 12:38
Re,
Si vraiment le VBA te pose problème et que tu n'as rien contre 2-3 copier/coller, tu peux tjs utiliser ce fichier (je l'utilise pour construire des listes de valeurs pour des requêtes SQL par ex....dsl pour les couleurs, mais ça correspondait aux couleurs de mon ancienne boite lol) : http://www.cijoint.fr/cjlink.php?file=cj200908/cijYFK9N8T.xls
2
Bonjour,

Dim i,j,a,valeur as string

i=1 ‘ ta première ligne ou se trouve ta valeur
j=1 ‘ ta première colonne ou se trouve ta valeur
a=0
cells(i,j).select

do while selection <> ""
if a <=100 then
a=a+1
if valeur = then
valeur = selection
else
valeur = valeur & ";" & selection
end if
a=a+1
else
cells(1,2).select
selection = valeur
a=0
valeur =""
end if
i=i+1
cells(i,j).select
loop
Un conseil fais le par F8 et regarde si ca te convient.
1
ben13.51 Messages postés 112 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 11 janvier 2012 7
11 août 2009 à 11:36
Voilà une autre solution...
j'ai été moins rapide à la créer mais je te la met quand même...

Dim Ligne As String
Sub CompilLigne()
Ligne = ""
For i = 1 To 100
If Sheets(1).Cells(i, 1) <> "" Then
Ligne = Ligne & ";" & Sheets(1).Cells(i, 1)
End If
Next i
Sheets(2).Cells(1, 1) = Ligne


Ligne = ""
For i = 101 To 200
If Sheets(1).Cells(i, 1) <> "" Then
Ligne = Ligne & ";" & Sheets(1).Cells(i, 1)
End If
Next i
Sheets(2).Cells(1, 2) = Ligne

Ligne = ""
For i = 201 To 300
If Sheets(1).Cells(i, 1) <> "" Then
Ligne = Ligne & ";" & Sheets(1).Cells(i, 1)
End If
Next i
Sheets(2).Cells(1, 3) = Ligne

'... tu peux répéter autant de fois ce modèle que tu as de multiple de 100 cellules

end sub
1
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
11 août 2009 à 13:25
Oki, alors regarde le fichier que j'ai posé sur cijoint.fr, ça devrait t'être utile ;)
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
11 août 2009 à 15:54
J'ai limité à 400 pr des questions de perf mais tu peux adapter ;)
1
ben13.51 Messages postés 112 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 11 janvier 2012 7
11 août 2009 à 16:04
essaye qqchose comme ça:
Dim ligne as string

Sub...()
for j =1 to 65
Ligne = ""
for i = ((j-1)*100)+1 to j*100
if sheets(1).cells((i,1)<>"" then
Ligne=Ligne&";"&Sheets(1).Cells(i,1)
end if
next i
Sheets(2).cells(j,1)=Ligne
Next j

end sub

Avec ça tu devrais pouvoir faire jusqu'à 65 listes de 100 identifiants
1
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
11 août 2009 à 16:05
Normalement ta liste de valeurs est à coller en B5:B405, les parametres en F4:F6 et le résultat en F2.....
Si le résultat s'affiche pas essaie de modifier la couleur du texte, c'est peut etre un pb de conversion de couleurs (fichier réalisé en Excel 2007)....
1
pissdrunk Messages postés 65 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 12 août 2009 22
11 août 2009 à 11:24
Bonjour Mélanie et merci pour ce retour rapide !

Je ne m'y connais pas énormément en VBA...

J'ai donc ajouté un module et copié le code que tu m'as indiqué.

Faut-il auparant ajouter une ligne de type "Sub Ligne()" au début et "End Sub" à la fin ?

De plus dans le code que tu m'a donné à un moment il y a If valeur = Then faut-il mettre une valeur avant le "then" ?

Je suis embetant je sais ... :)

D'avance merci pour le coup de main !
0
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
11 août 2009 à 11:41
Bonjour,
Si tu ne connais pas VBA et que tu n'as que 245 lignes, pourquoi ne pas simplement utiliser un copier/collage spécial ? Tu sélectionne tes 100 premieres cellules, ensuite tu les copie (CTRL+C ou click droit/copier), ensuite un clique droit sur ta cellule de destination/collage spécial et tu coches "Transposé".
0
ben13.51 Messages postés 112 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 11 janvier 2012 7 > tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013
11 août 2009 à 11:45
Je crois que son but est de copier les 100 cellules de sa colonne dans une seule, toutes séparé par ";"... transposé ne permet que de copier ses 100 cellules en ligne...
0
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435 > ben13.51 Messages postés 112 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 11 janvier 2012
11 août 2009 à 11:52
Oki, autant pr moi alors j'ai lu trop vite ! J'aimerai bien comprendre la finalité qd même, c une drôle de manip' (et puis si c'est pour générer un .csv, ça tient tjs la route avec le transposé...)
0
ben13.51 Messages postés 112 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 11 janvier 2012 7 > tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013
11 août 2009 à 11:57
Oui tu as raison il serait intéressant de connaître le but de tout ça...
0
pissdrunk Messages postés 65 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 12 août 2009 22
11 août 2009 à 13:24
Hello et merci d'être autant à me répondre !

Alors pour tout vous dire je travaille sous Business Objects sur des identifiants que l'on m'adresse sous Excel (j'ai pris 245 lignes dans mon exemple mais ca peut très bien être 950 lignes...voir plus) or dans Businiess Objets, lorsque que je veux travailler sur ces identifiants je ne peux pas en mettre plus de 100 dans une même ligne.

Exemple: chaque marque de voiture a un identifiant (123 pour renault, 456 pour peugeot, 789 pour citroën)

Je vais devoir remonter pour renault et peugeot le nombre de voiture en circulation, donc dans BO il va falloir que dans les critères de la requête je fasse la chose suivante:

Identifiant_voiture DANS LISTE (123;456) et chaque identifiant doit être séparé par un ";"

La il y a que deux identifiants mais je peux avoir à en mettre plusieurs centaines or par ligne dans BO il n'en accepte que 100...c'est pour que je puisse faire des copier coller rapidement des identifiants par liste de 100...

Je sais c'est pas évident à expliquer sur le net comme ça...si je ne suis pas clair n'hésitez pas à me revenir !

Merci encore!
0
pissdrunk Messages postés 65 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 12 août 2009 22
11 août 2009 à 15:51
Effectivement ton fichier peut m'être utile dans le cas ou j'ai moins de 100 identifiants...après ca se complique...
0
pissdrunk Messages postés 65 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 12 août 2009 22
11 août 2009 à 15:55
Par contre effectivement on voit pas le résultat du coup je copie colle la cellule I204 (je crois que c'est celle la) et j'ai l'info, merci pour ton aide en tout cas.
0
pissdrunk Messages postés 65 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 12 août 2009 22
12 août 2009 à 15:26
Merci à tous, en prenant les idées à droite à gauche de vos aides je suis parvenu à bout ! et il y a une grosse utilité derrière, un grand merci à tous encore une fois !

Cdt,

Jean
0
Bonjour Pissdrunk,

Désolé de reveiller un vieux topic mais étant moi même en train de faire du requêtage sous BO XI depuis pas longtemps, j'ai besoin de ton aide.

Je dois requeter à partir de fichiers .csv qui peuvent aller a beaucoup plus que 400 entrées, l'idée étant de faire une requête de 1000/2000 numéros et de la laisser tourner autant de temps que necessaire.

J'ai requêté pour une liste de 147 éléments et il n'y a eu aucun message d'erreur, je récupère bien les donnèes. Que voulais tu dire par "business object est limité a 100 entrées"?

Ce serait sympa de m'envoyer ta méthode.

Cordialement,

quentin
0