Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Macro copier/coller

SimonAbrhm

XLDnaute Nouveau
Bonjour à tous,
Je sollicite votre aide pour la création d'une macro.
Je souhaiterais une macro qui puisse copier/coller le nom du client dans une autre colonne.
Dans un fichier Excel, j'ai des factures (colonne B, cellules en rouge dans le fichier joint) et au-dessus figurent le nom du client, je voudrais que le nom du client apparaisse en face de chaque facture en colonne L (cellules en jaune, colonne L du fichier joint).
Je vous laisse regarder le fichier joint, ça sera plus simple pour comprendre et tout est expliqué.
D'avance merci beaucoup pour votre aide et si ce n'est pas clair, n'hésitez pas.
Cordialement,
Simon
 

Pièces jointes

  • Exemple_Macro.xlsx
    13.7 KB · Affichages: 9
Solution
Oui, c'est plus clair. C'est exactement le contraire du post #3.
on peut utiliser les intitulés en colonne A si cellule colonne A = INC ou CM alors le nom du client.

Donc voici la V3, j'y ai rajouté les règles :
VB:
Sub Client()
' Règles :
'   Si ColA= INV ou CM alors Facture
'   Si ColA= INV ou CM et ColA(-1)="" alors NomClient en ColB(-1)
'   Mettre NomClient en ColL devant chaque INV ou CM mais pas si ColA="Customer Totals:"
Application.ScreenUpdating = False
[L:L].Clear
Taille = Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To Taille
    If (Range("A" & i) = "INV" Or Range("A" & i) = "CM") And Range("A" & i - 1) = "" Then
        NomClient = Range("B" & i - 1)
    End If
    If (Range("A" & i) = "INV" Or...

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Simon,
Un essai en PJ.
La macro est simple et facilement modifiable :
VB:
Sub Client()
[L:L].Clear
Taille = Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To Taille
    If Range("B" & i).Interior.Color = RGB(255, 0, 0) Then
        If Range("B" & i - 1).Interior.Color <> RGB(255, 0, 0) Then
            NomClient = Range("B" & i - 1)
        End If
        Range("L" & i) = NomClient
        Range("L" & i).Interior.Color = RGB(255, 255, 0)
    End If
Next i
End Sub
 

Pièces jointes

  • CustomersColors.xlsm
    27.8 KB · Affichages: 4

SimonAbrhm

XLDnaute Nouveau
Bonjour Sylvanu,
Merci pour ton aide.
Malheuresement dans mon rapport d'origine, il n'y a pas de couleur. J'ai rajouté des couleurs juste pour illustrer mon problème.
Mais au lieu de la couleur on peut utiliser les intitulés en colonne A si cellule colonne A = INC ou CM alors le nom du client.
Peux-tu faire cela?
Merci pour ton aide
Simon
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
C'est encore plus simple :
VB:
Sub Client()
[L:L].Clear
Taille = Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To Taille
    If Range("A" & i) = "INC" Or Range("A" & i) = "CM" Then
        NomClient = Range("B" & i)
    Else
        If Range("A" & i) <> "Customer Totals:" Then
            Range("L" & i) = NomClient
        End If
    End If
Next i
End Sub
cependant il faut respecter les règles :
1- Devant un client, en colonne A, on trouve INC ou CM.
2- A la fin du traitement client on trouve en colonne A : "Customer Totals:"
 

Pièces jointes

  • Customers (V2).xlsm
    27.8 KB · Affichages: 6

SimonAbrhm

XLDnaute Nouveau
Sylvanu,
merci, est-ce qu'il est possible de procéder autrement pour la condition 1 (INC ou CM devant le client) car dans ce cas là je dois ajouter manuellement INC ou CM. ça serait parfait si c'était 100% automatique
 

SimonAbrhm

XLDnaute Nouveau
Sylvanu,
Je t'ai renvoyé le fichier Excel où j'explique tout. J'espère que cela sera plus clair pour toi.
Merci encore pour ton aide.
Simon
 

Pièces jointes

  • Exemple_macro2.xlsx
    15.2 KB · Affichages: 6

sylvanu

XLDnaute Barbatruc
Supporter XLD
Oui, c'est plus clair. C'est exactement le contraire du post #3.
on peut utiliser les intitulés en colonne A si cellule colonne A = INC ou CM alors le nom du client.

Donc voici la V3, j'y ai rajouté les règles :
VB:
Sub Client()
' Règles :
'   Si ColA= INV ou CM alors Facture
'   Si ColA= INV ou CM et ColA(-1)="" alors NomClient en ColB(-1)
'   Mettre NomClient en ColL devant chaque INV ou CM mais pas si ColA="Customer Totals:"
Application.ScreenUpdating = False
[L:L].Clear
Taille = Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To Taille
    If (Range("A" & i) = "INV" Or Range("A" & i) = "CM") And Range("A" & i - 1) = "" Then
        NomClient = Range("B" & i - 1)
    End If
    If (Range("A" & i) = "INV" Or Range("A" & i) = "CM") And Range("A" & i) <> "Customer Totals:" Then
            Range("L" & i) = NomClient
    End If
Next i
End Sub
 

Pièces jointes

  • Customers (V3).xlsm
    28.3 KB · Affichages: 4

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…