Séparation de données avec reprise d'une cellule
Bonjour tout le monde,
Je viens avec une nouvelle question,
Dans une colonne sur ma feuille Généralités j'ai des matières et dans une seconde les épaisseurs qui sont séparées par un ";"
J'aimerais que dans une autre feuille (Données) je retrouve dans une même colonne le nom de ma matière avec une épaisseur
C'est à dire par exemple que si dans ma feuille généralité j'ai :
A2 = HETRE et B2 = 23;54;16
A3 = CHENE et B3 = 14;20;16
Alors dans ma feuille Données j'aurais
A2 = HETRE 23
A3 = HETRE 54
A4 = HETRE 16
A5 = CHENE 14
A6 = CHENE 20
A7 = CHENE 16
....
J'ai ce code qui me permet de séparer les épaisseurs et de mettre au sein d'une seule colonne mais je n'arrive pas à rajouter le nom de la matière devant ...
Set Fsource = Sheets("Généralités")
Set Fdest = Sheets("Données")
Fdest.Range("G1").CurrentRegion.Offset(1, 0).ClearContents
dl = Fsource.Range("B" & Rows.Count).End(xlUp).Row
For g = 8 To dl
If Fsource.Range("B" & g) <> "" Then
x = Split(Sheets("Généralités").Range("B" & g), ";")
With Sheets("Données")
derlig = .Range("G" & Rows.Count).End(xlUp).Row + 1
.Cells(derlig, "G").Resize(UBound(x) + 1) = Application.Transpose(x)
End If
End With
Erase x
Next g
Set Fsource = Nothing
Set Fdest = Nothing
End SubMerci d'avance à vous :)
PS : Sur le fichier joint je n'ai pas mit mon code sans savoir si ça aiderait ou non ;)
Bonjour
Une solution PowerQuery intégé à Excel
Actualiser par Données, actualiser tout quand la source change
Hello 78chris,
Mon problème c'est qu'il s'agit d'un fichier que j'envoi à des fournisseurs, et que les données présentes vont me servir pour d'autres feuilles par la suite via des listes déroulantes ou autres.
Je ne peux donc me permettre de demander une action d'actualisation par contre j'ai déjà un bouton de vérification sur la page "Généralités" de mon côté c'est ça qui me sert à faire la "mise à jour" avec ma formule précédemment citée.
PowerQuery je maîtrise zéro de chez zéro et j'y comprend pas grand chose, j'ai peur de m'y perdre :/
Tu penses qu'en VBA ce n'est pas possible ?
Au besoin je peux joindre mon "vrai" fichier plus lourd qui te permettrait de voir toutes les formules etc
RE
Rien n'empêche de détacher le résultat de la requête, puis de supprimer celle-ci dans ce que tu transmets à l'extérieur.
Par ailleurs si la source n'évolue pas, on n'actualise pas et on peut aussi détacher le résultat
Justement le résultat est directement exploitables pour des listes déroulantes
Pour le résultat obtenu, PowerQuery fait cela très simplement et est plus facile à aborder que VBA.
Sinon attend qu'un VBiste passe par là...
78chris,
Désolé je ne comprend pas ta réponse
En fait la colonne des épaisseurs est rempli par le fournisseur c'est donc lui qui réalise l'action et non moi, la source va donc évoluer au cours du remplissage côté fournisseur, ce qui fait donc que la liste déroulante devra elle aussi être mise à jour par les données remplies.
Du coup, il n'est pas possible de faire l'actualisation de PowerQuery via mon bouton de vérification VBA ? (ce bouton c'est bien le fournisseur qui doit cliquer dessus pour lui permettre de passer à l'onglet suivant, je préfère donc éviter de demander en plus une actualisation et je suis quasiment sûr à 99% que nos fournisseurs oublieront de le faire si je le demande .. :/ )
Je suis sur Mac et je n'arrive pas à accéder à ta requête d'ailleurs (pour te dire mon niveau de PowerQuery je ne sais même pas comment me rendre dans ce que tu as fait haha)
Si via ce que tu as fait je peux le retranscrire facilement de mon côté ça me va mais je t'avoue que j'ai zéro maîtrise donc ça me semble très obscure ce que tu as fait :/
Merci à toi
RE
Précise Mac dans ton profil car c'est très limitatif et il vaut mieux qu'on le sache quand tu demandes une aide
PowerQuery n'existe pas sur MAC à ce jour
Juste pour info une actualisation par VBA s'obtient par ThisWorkbook.RefreshAll donc intégrable à un autre code
Attendons qu'un VBiste passe...
Re,
Oui je vais attendre pour voir si via VBA il existe une solution aussi :)
En fait j'utilise Mac et Windows donc c'est pour ça que je ne précise pas mais même en regardant avec Windows je n'arrive pas à comprendre comment tu as procédé via PowerQuery
Encore merci à toi !
RE
Sous Windows il suffit d'ouvrir PowerQuery via Données, Obtenir des données, Lancer PowerQuery
A droite tu as les étapes de la requête :
- la 1ère est automatique quand à partir d'une cellule d'un tableau structuré, on utilise : Données, à partir d'un tableau
Par défaut il y a aussi une étape automatique de typage des données que j'ai enlevé, notamment parce que tes titres de colonnes ne sont probablement pas les vrais (PowerQuery est un requêteur donc il s'appuie sur le modèle des base de données où les noms de champs sont essentiels)
Pour la même raison j'ai rétrogradés tes titres et ai effacé la ligne : avec des vrais titres on peut faire l'économie de ces 2 étapes
Avec un tableau correctement titré ces 2 étapes sont inutiles et seules les 2 étapes suivantes suffisent : - fractionner la 2ème colonne par délimiteur ; sur de nouvelles lignes
- fusionner les 2 colonnes avec un séparateur espace
Ces étapes se font simplement en passant par les options proposées dans les onglets ou le clic droit