Extraire une partie de cellule et l'intégrer dans une nouvelle ligne

Bonjour,

J'aimerais savoir s'il y a possibilité d'extraire une partie de cellule pour qu'elle se coupe et se colle automatiquement dans la cellule du dessous en insérant une nouvelle ligne ?

Bonjour,

C'est possible oui, encore faut-il un fichier représentatif et un maximum de détail sur ce que vous souhaitez faire, avec des références de cellules, nombre de données maximum. Un exemple avec les données de base et le résultat attendu.

Cdlt,

Re,

Voici le fichier, c'est un fichier de commandes et comme vous pouvez le voir, il y a des lignes avec deux références de produits (que j'ai surligné en orange), j'aimerais bien faire en sorte d'extraire la deuxième référence et de pouvoir l'intégrer à la ligne du dessous. par exemple en B74 extraire le 32370629 et l'intégrer à la ligne du dessous

11classeur2.xlsx (26.23 Ko)

Bonjour,

Un test fonctionnel chez moi :

Sub LIGNE()
Dim L%, C%
L = 2
With Worksheets("Feuil1")
    Do
        If .Cells(L, 2) Like "*<br/>*" Then
            .Rows(L + 1).Insert xlDown
            .Rows(L & ":" & L + 1).FillDown
            For C = 2 To 5
                .Cells(L, C) = Left(.Cells(L, C), InStr(1, .Cells(L, C), "<br/>") - 1) * 1
                .Cells(L + 1, C) = Right(.Cells(L + 1, C), Len(.Cells(L + 1, C)) - InStr(1, .Cells(L + 1, C), "<br/>") - 4) * 1
            Next i
        End If
        L = L + 1
    Loop Until .Cells(L, 2) = ""
End With
End Sub

Cdlt,

Re,

Ce message s'affiche et revient au code VBA...

image

Bonjour,

Oups j'ai remplacé directement sur le forum et n'ai pas vu une lettre désolé. Remplacez le i par C.

Cdlt,

Edit : J'ai bien retesté et cette fois ci c'est bon !

C'est super c'est exactement ce qu'il faut mais il faudrait qu'il s'applique pour tous les fichiers que je vais recevoir chaque mois hors la il ne s'applique qu'à celui-ci est-ce qu'il est possible de faire ca ?

Vu que tu en reçois un chaque moi, un bon vieux copier collé peut faire le travail.

Bonjour,

Deux solutions à ma connaissance :
- Inclure le code dans chacun des fichiers
- Inclure le code dans un fichier global avec un bouton qui va vous permettre de transformer directement le fichier ciblé à l'aide du code :

Sub TRANSFO()
Dim L%, C%, WB As Workbook
With Application.FileDialog(msoFileDialogOpen)
    .Title = "Selectionner votre fichier à transformer"
    If .Show = -1 Then
        Set WB = Workbooks.Open(.SelectedItems(1))
        Else
        MsgBox "Aucun fichier sélectionné, fin de la procédure"
        Exit Sub
    End If
End With
L = 2
With WB.Worksheets("Feuil1")
    Do
        If .Cells(L, 2) Like "*<br/>*" Then
            .Rows(L + 1).Insert xlDown
            .Rows(L & ":" & L + 1).FillDown
            For C = 2 To 5
                .Cells(L, C) = Left(.Cells(L, C), InStr(1, .Cells(L, C), "<br/>") - 1) * 1
                .Cells(L + 1, C) = Right(.Cells(L + 1, C), Len(.Cells(L + 1, C)) - InStr(1, .Cells(L + 1, C), "<br/>") - 4) * 1
            Next C
        End If
        L = L + 1
    Loop Until .Cells(L, 2) = ""
End With
WB.Save
MsgBox "Transformation finalisée"
End Sub

Cdlt,

2classeur1.xlsm (16.23 Ko)

J'ai finalement réussi à avoir le document qui viendra sous cette forme chaque mois pour pouvoir faire un copier coller donc est-ce qu'il est possible d'affecter le code à ce document ? Je vous le met en pièce jointe en surlignant les valeurs concernées la plupart du temps.

5classeur1.zip (315.88 Ko)

Et j'aimerais aussi que lorsque la ligne est insérer, les cellules F,J,K,L,M,N et O ne soient pas copiées et qu'elles restent vides, c'est possible ?

Bonjour,

Comptez vous analyser par la suite ces données ? Par exemple avoir une moyenne ou une somme par client ou je ne sais quoi ? Car si vous comptez analyser les colonnes avec prix il faut que je les convertisse en format numérique.

Dans l'attente de votre retour avant tout avancement dans ce fichier.

Cdlt,

Bonjour, oui il y a en effet des analyses qui sont faites par la suite.

Merci beaucoup

Bonjour,

Un test suite aux dernières informations :

Sub TRANSFO()
Dim L%, C%, WB As Workbook
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
ThisWorkbook.Worksheets(1).UsedRange.ClearContents
With Application.FileDialog(msoFileDialogOpen)
    .Title = "Selectionner votre fichier à transformer"
    If .Show = -1 Then
        Set WB = Workbooks.Open(.SelectedItems(1))
        Else
        MsgBox "Aucun fichier sélectionné, fin de la procédure"
        Exit Sub
    End If
End With
L = 2
With WB.Worksheets(1)
    .Range("I:K").NumberFormat = "@"
    Do
        If .Cells(L, 8) Like "*<br/>*" Then
            .Rows(L + 1).Insert xlDown
            .Rows(L & ":" & L + 1).FillDown
            Application.Union(.Cells(L + 1, 6), .Range(.Cells(L + 1, 10), .Cells(L + 1, 15))).ClearContents
            For C = 6 To 10
                If InStr(1, .Cells(L, C), "<br/>") > 0 Then .Cells(L, C) = Left(.Cells(L, C), InStr(1, .Cells(L, C), "<br/>") - 1)
                If InStr(1, .Cells(L + 1, C), "<br/>") > 0 Then .Cells(L + 1, C) = Mid(.Cells(L + 1, C), InStr(1, .Cells(L + 1, C), "<br/>") + 5, Len(.Cells(L + 1, C)))
            Next C
        End If
        L = L + 1
    Loop Until .Cells(L, 2) = ""
    .UsedRange.Copy
End With
With ThisWorkbook.Worksheets(1)
    .[A1].PasteSpecial xlPasteValues
    For C = 9 To 11
        .Columns(C).TextToColumns .Cells(1, C), FieldInfo:=Array(1, 1), DecimalSeparator:="."
    Next C
    .Columns("A:O").AutoFit
End With
WB.Close False
Application.CutCopyMode = False
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
MsgBox "Transformation finalisée"
End Sub

Cdlt,

8import.zip (325.18 Ko)

C'est parfait ! On peut faire en sorte de l'appliquer à un bouton pour mon document à présent ?

Bonjour,

Il est déjà là, tout à droite de la feuille. Je vous laisse le replacer là où bon vous semble.

Cdlt,

Il est là mais il me demande d'aller sélectionner un fichier à transformer or je veux l'intégrer directement dans mon ruban lorsque je traite le document...

Bonjour,

Ce n'est pas "possible". Du moins pas si simple. Ce fichier de destination sert à aller sélectionner le fichier source qui le transforme et le colle dans ce fichier de destination. Pour intégrer une macro dans le ruban, c'est du XLA ou complément de macro, et je ne penses pas que le besoin soit nécessaire si vous recevez ce fichier mensuellement. Je pense qu'aller sélectionner le fichier 12 fois par an ça n'est pas infaisable.

Si ce dernier est toujours nommé de la même façon et placé au même endroit on peu même aller le chercher automatiquement en modifiant le code. Mais dans ce cas il me faut plus de précisions, comme le nom du fichier et le chemin complet.

Cdlt,

Edit : De plus si vous l'intégrez dans le ruban, ce bouton sera intégré à l'application EXCEL, le ruban ne dépend pas du fichier dans lequel vous vous trouvez. Donc quelque soit le fichier EXCEL ouvert vous auriez ce bouton. D'où ma réticence.

Et même si je ne l'intègre pas dans mon ruban est-ce qu'il y a possibilité de simplement insérer le bouton à chaque fois dans ma feuille ? Car dans le fichier il y a plusieurs feuilles

Lorsque j'appuie sur le bouton et que je séléctionne mon fichier j'ai le message suivant qui s'affiche mais je ne vois pas la transformation

image

Bonjour,

C'est normal que vous ne la voyez pas la mise à jour à l'écran est masquée durant l’exécution du code. Le code ouvre le fichier, le transforme, copie toutes les valeurs, ferme le classeur ouvert, et recolles les valeurs où vous avez la macro avant de vous afficher le message. C'est donc votre fichier transformé que vous avez sous les yeux.

Dans le fichier joint vous n'avez mis qu'une feuille, je ne traite que la première feuille du classeur ouvert.

Cdlt,

Rechercher des sujets similaires à "extraire partie integrer nouvelle ligne"