Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Cellules à plusieurs lignes

  • Initiateur de la discussion Initiateur de la discussion nainfa
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

nainfa

XLDnaute Junior
Bonjour à tous,

Un grand merci par avance à ceux qui prendront la peine de me lire, et encore plus à ceux qui vont tenter de m'aider. 😉

Alors déjà, la version : j'utilise excel 2003.

La situation :
Je dois exploiter une base de données existante. Un exemple est joint à ce post.
La base de données existantes est située en haut à gauche, des cellules A1 à C3.

En gros, un fournisseur produit plusieurs types de produits, avec une capacité de production propre à chaque production. Comme vous le voyez, ces informations ont été entrées dans une seule cellule.
Le produit 1 a sa capacité de production associé sur la cellule d'à côté. Il en va de même pour les autres.


L'objectif :
L'objectif est d'arriver aux 4 tableaux que j'ai posé en bas à droite du fichier.
En gros, il s'agit d'un classement par produit, permettant d'identifier les fournisseurs concernés, avec leur capacité de production respective.


Désolé pour cette question qui vous paraîtra peut-être facile mais je me suis mis à manipuler excel au-delà du simple graphique il y a peu.

Voilà voilà !

Ah oui, j'y connais rien en VB et vu que la base de données est relativement réduite, j'ai tendance à préférer les formules. Après, je suis pas fermé non plus !

Guillaume
 

Pièces jointes

Re : Cellules à plusieurs lignes

Bonjour nainfa,

Bienvenue sur XLD

Pas facile en formule
Si tu séparais tes données en lignes Excel différentes en répétant le fournisseur pour chaque ligne, ce serait beaucoup plus jouable

Un essai cependant en fonction personnalisée (VBA)
 

Pièces jointes

Re : Cellules à plusieurs lignes

Bonjour, salut tototiti,

Il y a-t-il toujours trois produits par fournisseur (colonne B) ou ce nombre peut-il varier ?

C'est faisable par formules non matricielles et tableau intermédiaire (dissocier les données en plusieurs lignes), mais ce sera une petite usine à gaz (pas facile à comprendre)
 
Dernière édition:
Re : Cellules à plusieurs lignes

Bonjour à tous les deux,

Merci de vos réponses.

tototiti2008 :
Si tu séparais tes données en lignes Excel différentes en répétant le fournisseur pour chaque ligne, ce serait beaucoup plus jouable
Cela ne me dérange pas du tout, c'est juste que je n'ai pas le temps matériel de le faire à la main. Donc voilà, si jamais il y a une possibilité de faire ça, je suis preneur d'autant plus que cela pourrait me servir ailleurs.
Après, je n'ai jamais utilisé VBA donc je vais regarder ton fichier de plus près.

hoerwind :
Il y a-t-il toujours trois produits par fournisseur (colonne B) ou ce nombre peut-il varier ?
Au temps pour moi, j'aurais dû le préciser. Ce nombre est susceptible de varier.

Voilà

Guillaume
 
Re : Cellules à plusieurs lignes

Bonjour hoerwind,
Re,

si les données de ta base en Feuil1 colonnes A à C (comme dans le fichier exemple, cette macro devrait te les reformater "par ligne" dans la Feuil2 (doit être vide)

Code:
Sub Conv()
Dim TabloProduit, TabloProduction, Ligne As Long, i As Long, j As Long
    With Sheets("Feuil1")
    For i = 2 To .Range("A65536").End(xlUp).Row
        TabloProduit = Split(.Range("B" & i).Value, Chr(10))
        TabloProduction = Split(.Range("C" & i).Value, Chr(10))
        For j = LBound(TabloProduit) To UBound(TabloProduit)
            Ligne = Sheets("Feuil2").Range("A65536").End(xlUp).Row + 1
            Sheets("Feuil2").Range("A" & Ligne).Value = .Range("A" & i).Value
            Sheets("Feuil2").Range("B" & Ligne).Value = TabloProduit(j)
            Sheets("Feuil2").Range("C" & Ligne).Value = CDbl(TabloProduction(j))
        Next j
    Next i
    End With
End Sub
 
Re : Cellules à plusieurs lignes

Je viens d'essayer et merci, ça fonctionne bien !

Peux-tu prendre une ou deux minutes pour m'expliquer tes boucles? Même de façon superficielle. Juste que je comprenne le raisonnement.


Comment effectuer maintenant le classement par produits comme dans mon exemple par la suite?
 
Dernière édition:
Re : Cellules à plusieurs lignes

Re,

Voila le code commenté

Code:
Sub Conv()
Dim TabloProduit, TabloProduction, Ligne As Long, i As Long, j As Long
    With Sheets("Feuil1")
    For i = 2 To .Range("A65536").End(xlUp).Row 'Pour chaque ligne de la base en Feuil1
        TabloProduit = Split(.Range("B" & i).Value, Chr(10)) 'On récupère la liste des produits existants en colonne B dans le tableau TabloProduit
        TabloProduction = Split(.Range("C" & i).Value, Chr(10)) 'On récupère la liste des productions correspondantes en colonne C dans le tableau TabloProduction
        For j = LBound(TabloProduit) To UBound(TabloProduit) 'Pour chaque case du tableau TableauProduit
            Ligne = Sheets("Feuil2").Range("A65536").End(xlUp).Row + 1 '1ère ligne vide de la Feuil2
            Sheets("Feuil2").Range("A" & Ligne).Value = .Range("A" & i).Value 'Ecriture du nom du fournisseur en colonne A de Feuil2
            Sheets("Feuil2").Range("B" & Ligne).Value = TabloProduit(j) 'Ecriture du nom du produit en colonne B de Feuil2
            Sheets("Feuil2").Range("C" & Ligne).Value = CDbl(TabloProduction(j)) 'Ecriture de la production en colonne C (convertie en numérique) de Feuil2
        Next j
    Next i
    End With
End Sub

Un fichier exemple pour les calculs sur une liste de ce type
 

Pièces jointes

Re : Cellules à plusieurs lignes

Re,

tout se passe dans la partie là :


Pour chaque colonne qui contient plusieurs lignes, tu pourras ajouter une variable TabloQQchose, comme TabloProduction
Pour celles qui ne contiennent qu'une ligne, tu recopie seulement leur valeur comme en vert
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…