Copie de caractères séparés par des espaces dans des colonnes distinctes

Bonjour à tous,

J'aurais besoin qu'on m'aide à concevoir une macro qui permettrait de copier des caractères séparés par des espaces dans des colonnes distinctes.

Dans le fichier ci-joint "Exemple.xlsm", la colonne "C" contient un nombre variable de chaines de caractères séparés par des espaces. A l'exécution de la macro, les caractères séparés par des espaces devront être copiés dans les colonnes "D @ L" (voir deuxième tableau).

Merci à l'avance pour votre précieuse collaboration,

Renaud D.

6exemple.xlsm (13.08 Ko)

Bonjour,

Une alternative sans passer par macro :

2021 04 02 17 18 30 exemple xlsm lecture seule excel

A l'étape 3 vous pouvez sélectionner la zone de destination, ici D4.

Cdlt,

Bonjour Ergotamine,

Effectivement, votre alternative est simple et évite de passer par une macro.

J'appliquerai cette solution pour copier les caractères séparés par des espaces.

Merci beaucoup pour votre aide.

Sincères salutations,

Renaud D.

Bonjour Renaud Dugas, Ergotamine , le forum,

Comme j'avais bossé sur la macro.....

Un essai...

Option Explicit

Sub Test()
 Dim Tablo
 Dim i%, j%, derlig%

   With Sheets("Tableaux")
    derlig = .Range("C" & Rows.Count).End(xlUp).Row
    j = 4
     Do While j <= derlig
      Tablo = Split(.Range("C" & j).Value, " ")
       For i = 0 To UBound(Tablo)
        .Cells(j, 4 + i) = Trim(Tablo(i)) '.......en colonne à partir de D
        If .Cells(j, 6) <> "" Then .Cells(j, 6).Value = Abs(.Cells(j, 6).Value): .Cells(j, 6).NumberFormat = "(#)"
       Next i
    j = j + 1
     Loop
   End With
    Erase Tablo
End Sub
7exemple-1.xlsm (19.27 Ko)

CTRL + E pour exécuter la macro...

Cordialement,

Bonjour xorsankukai,

J'aime bien faire avec les fonctions de base d'Excel ne maitrisant que partiellement le VBA, et encore moins les arrays. Je ne savais d'ailleurs pas que le tableau se dimensionnait automatiquement par le biais de split c'est bon à savoir.

Petite question : pourquoi tu fais un absolu de ta valeur ? Pour la convertir en numérique ?

Abs(.Cells(j, 6).Value): .Cells(j, 6).NumberFormat = "(#)"

En tout cas belle application de boucles différentes imbriquées, je reste admiratif j'ai du mal à m'imaginer la représentation derrière.

Merci !

Cdlt,

Re,

@Ergotamine: moi, j'ai le souci inverse, ne connaissant pas toutes les fonctionnalités d'excel, j'essaie de compenser par vba,

Petite question : pourquoi tu fais un absolu de ta valeur ? Pour la convertir en numérique ?

En fait, j'ai tâtonné jusqu'à obtenir le résultat souhaité....


Avec seulement:

 .Cells(j, 4 + i) = Trim(Tablo(i)) 
d

Sans valeur absolue, résultat:

a

Donc avec absolu:

c

Peut-être qu'un simple formatage de la colonne permettrait d'obtenir le même résultat......

Je t'avoue que j'éprouve également des difficultés à me représenter ces manipulations de "tablo",

Merci à toi pour ton retour,

Amitiés,

Bonjour,

@xorsankukai : En effet étonnant qu'un nombre entre parenthèse soit considéré comme négatif .. J'ai tjs cru qu'il était obligatoire de dimensionner les tableaux dans leur déclaration. En tout cas tu peines peut être à te les représenter mais tu les maitrises bien !

J'ajoute pour l'auteur : Il est possible via ma manipulation de définir également le format numérique si vous souhaitez transformer les . en ,.

Cdlt,

Rechercher des sujets similaires à "copie caracteres separes espaces colonnes distinctes"