Microsoft 365 VBA-problème macro

  • Initiateur de la discussion Initiateur de la discussion ted1057
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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,
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

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.
 
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
 
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,
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
51
Réponses
31
Affichages
2 K
Réponses
4
Affichages
144
Réponses
5
Affichages
359
Retour