Microsoft 365 VBA-problème macro

ted1057

XLDnaute Occasionnel
Bonjour à tous,

Dans la construction d’export d’un fichier Excel vers un ERP, je rencontre des difficultés liées au fonctionnement de l’ERP.
Je dois faire un transfert d’information de ma feuille principale vers ma feuille d’Export.

Je regroupe les informations par famille de produit en fonction de 3 critères qui sont le type de produit, la finition et la couleur que je vais nommer « groupe »

Dans la feuille Export, je dois indiquer un commentaire qui est propre à chaque produit que je peux trouver dans la feuille base commentaires. Le commentaire doit être indiqué qu’une seule fois dans la colonne texte, pour chaque changement de groupe.

Dans la colonne désignation, je dois écrire un texte, par exemple « caramel » pour chaque ligne d’un groupe. Par contre je dois alterner l’écriture selon :
Caramel sans espace – groupe 1
Caramel avec un espace – groupe 2
Caramel sans espace – groupe 3
Caramel avec un espace – groupe 4
Etc

Merci de vos retours,

Cordialement,
 

Pièces jointes

  • Fichier pour Everwin.xlsm
    212.5 KB · Affichages: 7

Oneida

XLDnaute Impliqué
Bonjour,
Caramel sans espace – groupe 1
Caramel avec un espace – groupe 2
Caramel sans espace – groupe 3
Caramel avec un espace – groupe 4
Etc

Pouvez faire un exemple avec quelques groupes, car comprends pas trop vos explications
 

ted1057

XLDnaute Occasionnel
Bonjour,
Caramel sans espace – groupe 1
Caramel avec un espace – groupe 2
Caramel sans espace – groupe 3
Caramel avec un espace – groupe 4
Etc

Pouvez faire un exemple avec quelques groupes, car comprends pas trop vos explications
Bonjour,

J'ai mis dans le fichier un exemple de groupe et de mise en place d'espace ou non après le mot caramel.
le groupe 1 est composé de 2 lignes ayant la même référence et la même finition : "c" et "8019"
le groupe 2 est composé d'une ligne ayant "b" et "ANODISEE"
le groupe 3 est composé d'une ligne ayant "g" et "BRUT"

J'espère avoir été plus clair.

Cordialement,
 

Pièces jointes

  • Fichier pour Everwin.xlsm
    214.4 KB · Affichages: 3

ted1057

XLDnaute Occasionnel
Re,
Dans votre code procedure Sub exportation_everwin(),
la colonne B n'y figure pas, pourquoi?
Dans votre feuille "PRINCIPAL", y pas de colonne Designation!
Ben il n'y a pas la colonne "B" dans ma macro car je ne savais comment écrire le code.
La colonne désignation n'existe pas dans la feuille "PRINCIPAL" car il s'agit toujours du même texte à écrire. J'ai choisi le mot caramel pour pas donner d'indice sur le projet sur lequel je travaille.
 

laurent950

XLDnaute Accro
Bonsoir,

Un essaie
VB:
Option Explicit
Sub commentaire()
Dim TI As Single: TI = Timer
Dim d As Object
    Set d = CreateObject("Scripting.Dictionary")
Dim Flag As Boolean
Dim Clef As String
Dim Tb() As Variant
Dim i, cpt As Double
' ****************************************************************************************************
Dim ws As Worksheet
Set ws = Worksheets("Export EVERWIN")
    Tb = ws.Range(ws.Cells(2, 2), ws.Cells(ws.Cells(65536, 5).End(xlUp).Row, 6))
' ****************************************************************************************************
        For i = LBound(Tb) To UBound(Tb)
            Clef = Tb(i, 4) & "|" & Tb(i, 5)
                If d.Exists(Clef) Then
                    Tb(i, 1) = Tb(cpt, 1)
                Else
                    cpt = d.Count + 1
                    d.Add Clef, cpt
                    If Flag = False Then
                        Tb(i, 1) = "Caramel": Flag = True
                    Else
                        Tb(i, 1) = "Caramel ": Flag = False
                    End If
                End If
        Next i
'colonne à extraire en colonne : Application.Index(Tb, , 1) (colonne 1 du tableau "Tb")
 ws.Cells(2, 2).Resize(UBound(Tb, 1), 1).Value = Application.Index(Tb, , 1)
MsgBox Format(Timer - TI, "0.000\ sec.")
End Sub
 

ted1057

XLDnaute Occasionnel
Bonsoir,

Un essaie
VB:
Option Explicit
Sub commentaire()
Dim TI As Single: TI = Timer
Dim d As Object
    Set d = CreateObject("Scripting.Dictionary")
Dim Flag As Boolean
Dim Clef As String
Dim Tb() As Variant
Dim i, cpt As Double
' ****************************************************************************************************
Dim ws As Worksheet
Set ws = Worksheets("Export EVERWIN")
    Tb = ws.Range(ws.Cells(2, 2), ws.Cells(ws.Cells(65536, 5).End(xlUp).Row, 6))
' ****************************************************************************************************
        For i = LBound(Tb) To UBound(Tb)
            Clef = Tb(i, 4) & "|" & Tb(i, 5)
                If d.Exists(Clef) Then
                    Tb(i, 1) = Tb(cpt, 1)
                Else
                    cpt = d.Count + 1
                    d.Add Clef, cpt
                    If Flag = False Then
                        Tb(i, 1) = "Caramel": Flag = True
                    Else
                        Tb(i, 1) = "Caramel ": Flag = False
                    End If
                End If
        Next i
'colonne à extraire en colonne : Application.Index(Tb, , 1) (colonne 1 du tableau "Tb")
 ws.Cells(2, 2).Resize(UBound(Tb, 1), 1).Value = Application.Index(Tb, , 1)
MsgBox Format(Timer - TI, "0.000\ sec.")
End Sub
Bonjour,

Merci bien laurent950 ainsi qu'Oneida pour le temps passé à mon soucis.

Cordialement,
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof