Convertir dans une seule colonne (VBA)

Bonjour tout le monde,

Je crois que je vais commencer à passer ma vie sur ce forum je vais finir expert

J'ai un besoin un peu particulier et "bizarre"

Sur mon fichier dans le premier onglet j'ai des données qui sont remplies, les données qui m'intéressent actuellement sont la partie "Epaisseurs (séparées par des points virgules)" dans l'exemple il n'y a que 4 lignes mais ça peut être plus d'ailleurs.

Du coup, j'aimerais que les données saisies dans ces lignes soit reprises dans un autre onglet (dans l'exemple Destination) et qu'elles soient converties afin de ne plus avoir de ";" car je veux ensuite les intégrer dans une liste déroulante. Le problème étant que ma formule me permet la conversion mais ça me fait plusieurs colonnes, j'aimerais que tout soit transféré que sur une colonne pour pouvoir le reprendre ensuite pour une liste déroulante.

Je ne sais pas si je suis très clair n'hésitez pas à me le dire si ce n'est pas le cas

Merci d'avance à vous et bonne journée !

10convertir-vba.xlsm (18.09 Ko)

Salut Kinders

pas besoin de macro pour ça.

Avec PQ:

11convertir-vba.xlsm (26.47 Ko)

tu peux aussi passer par Rechercher et sélectionner -> remplacer -> remplacer ";" par un espace

Hello Numéro 2,

Le soucis en fait c'est que je veux ça en mode "automatique" car c'est un fichier qui va être envoyé pour une demande de donnée, je ne dois donc pas faire de geste en soit de mon côté pour faire cette modification.

De plus je vois que dans ton tableau "final" les chiffres sont toujours sur la même ligne, mon but étant que chaque cellule est 1 seul nombre. Exemple si on a 40;20;25 alors tu auras sur une même colonne 3 cellules avec dans la première 40, la seconde 20 puis la dernière 25.

Je ne sais pas si je suis plus clair dans ma demande désolé

Merci à toi

Ok, un autre essai :

Sub Convert()
Dim var As Long
Dim i As Long
Range("A:A").TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, Semicolon:=True

For var = 1 To Cells(Rows.Count, 2).End(xlUp).Row
Range(Cells(var, 2), Cells(var, 2).End(xlToRight)).Copy
For i = 5 To 100
If Cells(i, 1) = "" Then
Cells(i, 1).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True
Exit For
End If
Next
Next
End Sub

par contre je colle les données en dessous de ton tableau, peut être les mettre dans une nouvelle feuille dans ton cas ?

Bonjour kinders59, Numéro 2, le forum,

Une variante....à tester...

Sub test()
 Dim i%, dl%, x, derlig%
 Dim Fsource As Worksheet, Fdest As Worksheet

  Set Fsource = Sheets("Feuil1")
  Set Fdest = Sheets("Destination")

   Fdest.Range("A1").CurrentRegion.Offset(1, 0).ClearContents  '................efface données colonne A
   dl = Fsource.Range("A" & Rows.Count).End(xlUp).Row '.........................définit dernière ligne colonne A
    For i = 2 To dl '...........................................................boucle de la ligne 2 à la dernière
     If Fsource.Range("A" & i) <> "" Then '.....................................si cellule remplie en A
      x = Split(Sheets("Feuil1").Range("A" & i), ";") '.........................stocke contenu cellule dans tableau x
       With Sheets("Destination")
        derlig = .Range("A" & Rows.Count).End(xlUp).Row + 1 '...................définit dernière ligne en A
        .Cells(derlig, "A").Resize(UBound(x) + 1) = Application.Transpose(x) '..écrit contenu du tableau x en le transposant
       End With
      Erase x '.................................................................libère la mémoire
     End If
    Next i
End Sub

Cordialement,

Bonjour Numéro 2 et Xorsankukai,

Merci à vous deux pour vos réponses très précieuses ! Et désolé pour ma réponse tardive je n'étais pas là du week-end

Numéro 2, effectivement je cherche à l'avoir sur une autre feuille mais sinon le code fonctionne très bien, mis à part qu'il faut faire un clean avant de potentiellement recliquer sur le bouton sinon ça s'ajoute au fur et à mesure

Xorsankukai, super code aussi, j'aurais une question je vois que tu as fait deux boutons, penses-tu que je puisses-tout réunir sur un seul et même bouton et que ce bouton soit présent sur une autre feuille ? D'ailleurs, je me demande si le code peut même être directement intégré sur la feuille pour agir en mode continu sans click, mais j'imagines que niveau mémoire ça doit tirer assez fort ?

Encore merci à vous !

Re,

Merci pour ton retour,

je vois que tu as fait deux boutons

Heu...non, je n'utilise que le bouton "xorsankukai" auquel j'ai affecté la macro "test".

je me demande si le code peut même être directement intégré sur la feuille pour agir en mode continu sans click, mais j'imagines que niveau mémoire ça doit tirer assez fort ?

A quel moment veux-tu que la macro s'exécute ?

Cordialement,

Re,

Heu...non, je n'utilise que le bouton "xorsankukai" auquel j'ai affecté lamacro"test".

My bad c'est mon propre bouton que j'avais placé là sans m'en rappeler

C'est une macro qui fonctionne du feu de dieu quand même je suis impressionné j'ai réussis à la transposer, il faut vraiment qu'avec tes indications écrit en commentaire dans le code je comprenne car c'est vraiment top !

En vrai, je me demande si à partir du moment où des données commencent à être renseignées elles peuvent être directement transposées de l'autre côté et sous la même forme qu'avec ta macro mais je demande peut-être la lune et c'est peut être beaucoup de ressource qui doivent tourner en continue (je le voyais comme un Sub Change)

Merci à toi !

Re,

En vrai, je me demande si à partir du moment où des données commencent à être renseignées elles peuvent être directement transposées de l'autre côté et sous la même forme qu'avec ta macro mais je demande peut-être la lune et c'est peut être beaucoup de ressource qui doivent tourner en continue (je le voyais comme un Sub Change)

Tu peux essayer d'utiliser l'évènement "Change" de la feuille "Feuil1" en limitant ton champ d'action à la colonne A....

Un exemple:

Cordialement,

Re,

Wow c'est d'une rapidité incroyable même ! Penses-tu que ce sois viable si j'ai d'autres formules en plus sur le classeur ? Je ne sais pas ce qui est le mieux laisser sur un bouton ou sur la feuille, et surtout est-ce que cela à une vrai incidence ?

Un énorme merci à toi pour ton temps et ton aide !

Re,

Je ne sais pas ce qui est le mieux laisser sur un bouton ou sur la feuille, et surtout est-ce que cela à une vrai incidence ?

Tout dépend comment tu veux effectuer ta mise à jour.....à chaque fois que tu agis sur ta colonne A (Feuil1), uniquement via un bouton, à l'activation de la feuille Destination...

Comment sont inscrites tes données en Feuil1 ? Manuellement ? Via une autre macro ? (auquel cas on peut appeler la mise à jour à la fin de la procédure)...

Plusieurs possibilités s'offrent à toi, à toi de choisir ...

Cordialement,

Bonjour,

Pour le fun, une proposition Power Query et un soupçon de VBA.

Cdlt.

Bonjour tout le monde !

Comment sont inscrites tes données en Feuil1 ? Manuellement ? Via une autre macro ? (auquel cas on peut appeler la mise à jour à la fin de la procédure)...

Elles sont inscrites manuellement sur la première feuille ce sont des fournisseurs qui devront le faire (il y aura donc peut être du copier-coller donc).

Pour le fun, une proposition Power Query et un soupçon de VBA.

Je suis déjà pas très fort en VBA alors Power Query j'en parle même pas mais je remarque qu'il est un peu plus long en temps de chargement, dû certainement au fait que Power Query est un requêteur ? Mais je vais quand même essayer de comprendre le fonctionnement ;)

Merci à vous ! Et bonne journée :)

Cordialement,

Rechercher des sujets similaires à "convertir seule colonne vba"