| ||||||||
Astucien | Hello à tous. et bonne année
exercice pour moi ....
je chercher à convertir une cellule qui contient plusieurs nombres séparés par des espaces et les mettre dans des cellules séparées .. exemple : 6 12 10 7 8 3 1 11 dans une cellule devient :
je sais que cela est possible via "Données / Convertir
mais je me pose la question comment le faire en vba ?
c'est un bon exercice pour moi afin d'essayer de comprendre certaines notions.. par rapport à la cellule active ...
le principe serait .. une macro.. je sélectionne une cellule et je clique sur la macro.. et la conversion se fait .. il faut donc utiliser la cellule "active ou sélectionnée" et non pas une cellule fixe.. merci de votre aide.. Modifié par Jumpty le 16/01/2022 00:32 | |||||||
Publicité | ||||||||
| ||||||||
Petit astucien | Bonjour, Teste ceci, le lancement de la macro convertira en plusieurs cellules à droite de la cellule sélectionnée
| |||||||
Astucien | Re m12, et merci de m'apporter une aide
1) j'ai placé ton code dans la fenêtre de saisie => aussitôt une partie du texte a pris la couleur rouge.. ?? surement une erreur de syntaxe ? 1) puis, j'ai sélectionné au préalable une cellule remplie avec 6 12 10 7 8 3 1 11 dans une seule cellule 3) et j'ai lancé le code. Erreur de compilation .. pb de syntaxe ? Voir cette capture : Modifié par Jumpty le 15/01/2022 21:10 | |||||||
Astucien | Info .... (Suis sous Excel 2003) Lorsque j'utilise "Données / Convertir" on me propose "Délimité ou Largeur Fixe" Perso je prends "Délimité" avec séparateur espace et non pas "largeur Fixe" car parfois, avec largeur fixe cela passe mal parfois.. (même avec une cellule) - j'ai remarqué aussi que si je prends 2 cellules dont les nombres n'ont pas le même nombre de chiffre 1° Ligne : 11(2 chiffres) 9(1 chiffre) 10(2 chiffres) 7(1 chiffre) 8(1 chiffre) 5(1 chiffre) 6(1 chiffre) : Nb de chiffre au total 2+1+2+1+1+1+1 = 9 chiffres 2° Ligne : 11(2 chiffres) 12(2 chiffres) 5(1 chiffre) 15(2 chiffres) 7(1 chiffre) 10(2 chiffres) 8(1 chiffre) : Nb de chiffre au total 2+2+1+2+1+2 = 11 chiffres si je prends "Largeur Fixe" cela passe mal .., le transfert se fait mal... je ne sais pas si cela a de l'importance mais préfère le préciser ... Il faut donc bien prendre "Délimité" avec séparateur "espace" | |||||||
Astucien | Personne n'a d'idée ? | |||||||
Petit astucien ![]() |
ce code Sub convert() Modifié par corinthien le 18/01/2022 15:50 | |||||||
Astucien | Re corinthien, Ok, Vu, Merci de ta remarque. pour le code de "m12", en effet, ce sont bien les retours chariots qui gênait.. je pensais que ce caractère "_" permettait de faire "une continuité dans le code." sans ce caractère cela fonctionne . simplement cela place le 1° chiffre sur la cellule "à coté de la cellule source" je souhaitais commencer sur la cellule "source"
PS : il n'y a pas de caractère dans le code VBA qui permet de faire une continuité quand le code est trop long ?
Ton code lui convient parfaitement. Super Merci
Quelques infos si possible. instructions que je ne connais pas .. "FieldInfo :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1)" C'est quoi cet Array(x,y) Tableau ? pourtant il n'est pas déclaré ? Aussi .. Dans ton Code . Sub convert() je ne connais pas ces 2 instructions. Split(Selection, " ") et Selection.Offset(0, 0 + i) Merci de ton aide. - Merci aussi à m12, sauf que ce code ne prend pas en compte si il y a plus de 8 nombres dans la cellule. mais avec l'exemple que j'avais donné cela fonctionne. - Le Code de corinthien prend en compte le nb de chiffres qu'il y a dans la cellule source et adapte en fonction . Merci encore à vous deux - Et merci à corinthien, si tu peux m'expliquer les 2 instructions Split(Selection, " ") et Selection.Offset(0, 0 + i) serait sympa.
Modifié par Jumpty le 19/01/2022 12:01 | |||||||
Astucien ![]() | Bonjour, Jumpty a écrit : Oui, c'est tout à fait ça. Mais quand on tape le code, il ne faut faire qu'une seule fois la touche Entrée après l'underscore. Ce qui donne pour le code de m12 : Sub convert() With ActiveCell
Selection.TextToColumns Destination:=ActiveCell.Offset(0, 1), DataType:=xlDelimited, _ End With
End Sub . Jumpty a écrit : Ouvre la page de ton code VBA dans Excel, clique sur le mot Split ou sur le mot Offset pour y placer le curseur et tape F1 au clavier. A condition d'être connecté à internet, tu sauras tout sur ces commandes, expliquées en français par Microsoft.
| |||||||
Astucien ![]() | Au passage, bravo corinthien pour ton code. Je ne pense pas qu'on puisse faire plus concis ! J'ai bien aimé. | |||||||
Petit astucien ![]() |
Merci apolinaire. Jumpty, dans le code de m12, il suffit re remplacer Destination:=ActiveCell.Offset(0, 1) par Destination:=ActiveCell.Offset(0, 0) et comme te l'a écrit apolinaire, taper F1 sur le mot | |||||||
Petit astucien ![]() | @apolinaire, on peut faire plus court… Sub convert() mais donne un avertissement Modifié par corinthien le 19/01/2022 20:49 | |||||||
Astucien | La solution fonctionne et merci de votre aide.
PS cela marche avec une cellule Ok. pourriez vous me dire quel code ajouter si par exemple on sélectionne 2 cellules ou plus ... (l'une au dessus de l'autre) et que l'on souhaite faire idem avec les 2 cellules ? Début : Fin : le 6 dans la 1° colonne de la 1° Ligne puis la suite dans les colonnes qui suivent le 12 dans la 1° colonne de la 2° Ligne puis la suite dans les colonnes qui suivent
Merci ecore de votre aide à tous
| |||||||
Petit astucien ![]() |
l'une à côté de l'autre, ça risque d'être délicat...
Dim colonne() As String Modifié par corinthien le 24/01/2022 22:48 | |||||||
Astucien | Avec un peu de retard, Merci à tous. | |||||||
![]() | ||||||||
Petit astucien ![]() | @galopin01, est-tu sur de ton code ? Sub Convert() Modifié par corinthien le 14/02/2022 19:12 | |||||||
Astucien | Re Galopin, galopin01 a écrit :
Merci pour le téléchargement, Mais ... est-il possible de me mettre le fichier au format Excel 2003 (.xls) ? Ma version ne le prend pas et le convertisseur parfois ne passe pas bien.. Merci d'avance. Modifié par Jumpty le 14/02/2022 19:11 | |||||||
|
Les bons plans du moment PC Astuces | Tous les Bons Plans | |||||||||||||||
|