Convertir cellule excel en ajoutant une nouvelle ligne

avyrex1626

XLDnaute Nouveau
Bonjour à tous,

J'ai besoins d'aide avec cette macro.

Cette macro convertie chaque cellule de la colonne L en séparrant le nom et le numéro de PO de cette facon si:

Un example de valeur que je peux avoir dans la colonne L est: SANTA MARIA FOODS 069261-03, 531643-03

Ce que je veux faire maintenant, c'est de séparrer le nom des numéro de POs. Les numéro de PO sont toujours du même format. Ex: 069261-03 donc du format 000000-00. Sil y a plus d'un PO, ils sont séparés par une virgule.

Il peux y avoir plusieurs PO comme par moment, il y en a aucun.

Maintenant, la facons de les convertires serait comme si:
Si j'ai cette valeur dans la colonne L, sur une ligne: SANTA MARIA FOODS 069261-03, 531643-03


Dans la colonne L, j'aurais: SANTA MARIA FOODS
et dans la colonne M, j'aurais: 069261-03

Mais du fait qu'il y a 2 PO apres le nom, il ajouterait une nouvelle ligne en dessous et dans la colonne L, j'aurais encore: SANTA MARIA FOODS
et dans la colonne M, j'aurais le 2e po: 531643-03

Avec la macro que j'ai maintenant, je séparre parfaitement les POs des nom. Mon probléme est qu'il n'ajoute pas de nouvelle ligne. A cause de sa, du fait qu'il y a des données dans les autre colonnes qui doivent suivre les données de chaque ligne, maintenant, ils se décalle.

Pouvez-vous m'aider s.v.p?

Merci beaucoup.
 

Pièces jointes

  • Copie de Test-convert-name-r2.xlsm
    22.3 KB · Affichages: 69
  • Copie de Test-convert-name-r2.xlsm
    22.3 KB · Affichages: 70
  • Copie de Test-convert-name-r2.xlsm
    22.3 KB · Affichages: 72

avyrex1626

XLDnaute Nouveau
Re : Convertir cellule excel en ajoutant une nouvelle ligne

J,ai fait un test de cette façon mais toujours le même problème:

Code:
Dim Nom As String, Lib As String, Po As String

Application.ScreenUpdating = False
For n = 4 To Range("L" & Rows.Count).End(xlUp).Row
  Nom = Range("L" & n).Value
  Lib = Nom
  i = InStr(Lib, "-")
  While i > 0
    If i > 7 Then
      If IsNumeric(Mid(Lib, i - 7, 6)) And IsNumeric(Mid(Lib, i + 1, 2)) Then
        Po = Mid(Lib, i - 6, 9)
        Range("M" & n) = Range("M" & n) & ";" & Po
      End If
    End If
    Lib = Mid(Lib, i + 1)
    i = InStr(Lib, "-")
  Wend
  Range("M" & n) = Mid(Range("M" & n), 2)
Next n
For n = Range("L" & Rows.Count).End(xlUp).Row To 4 Step -1
  Range("L" & n) = Replace(Range("L" & n), Replace(Range("M" & n), ";", ", "), "")
  x = Split(Range("M" & n), ";")
  If UBound(x) > 0 Then
    Range("M" & n) = x(UBound(x))
'    Range("L" & n) = Replace(Range("L" & n), x(0), "")
    For m = UBound(x) - 1 To 0 Step -1
      Rows(n).Insert
      Range("M" & n) = x(m)
      Range("A" & n + 1 & ":L" & n + 1).Copy Destination:=Range("A" & n)
    Next m
  End If
Next n
Application.ScreenUpdating = True
 

Pièces jointes

  • Copie de Copie de Test-convert-name-r4.xlsm
    24.4 KB · Affichages: 35

pierrejean

XLDnaute Barbatruc
Re : Convertir cellule excel en ajoutant une nouvelle ligne

Re

Vois si cette version convient
 

Pièces jointes

  • Copie de Copie de Test-convert-name-r3.xlsm
    24.5 KB · Affichages: 33
  • Copie de Copie de Test-convert-name-r3.xlsm
    24.5 KB · Affichages: 38
  • Copie de Copie de Test-convert-name-r3.xlsm
    24.5 KB · Affichages: 39

avyrex1626

XLDnaute Nouveau
Re : Convertir cellule excel en ajoutant une nouvelle ligne

Après plusieurs tests, je crois que nous y sommes vraiment très pret du but.
Maintenant, le numéro ex: ME6628090555-60 n'est plus séparé. Mais je viens de savoir qu'il est question d'un numéro de PO aussi. Vraiment désolé.

Le seul problème restant est qu'il doit quand même être envoyé dans la colonne M en entier: ME6628090555-60

Une fois possible, je crois que le tout sera parfait.

Merci encore. Vraiment apprécié
 
Dernière édition:

avyrex1626

XLDnaute Nouveau
Re : Convertir cellule excel en ajoutant une nouvelle ligne

A titre d'information, après quelque recherche, nous avons 2 formats the PO:

ME6628090555-60
et
123456-78

Maintenant, le 2e format fonctionne dans la macro pour les transférer dans la colonne Numéro de PO.

Maintenant, il reste seulement le 1er format: ME6628090555-60

Merci encore
 

avyrex1626

XLDnaute Nouveau
Re : Convertir cellule excel en ajoutant une nouvelle ligne

Bonjour Pierrejean

Je rencontre un probléme avec cette partie du code aussi:
Code:
If (Mid(Range("M" & n), InStr(Range("M" & n), "-") - 7, 1) = " " Or Mid(Range("M" & n), InStr(Range("M" & n), "-") - 7, 1) = "," Or Asc(Mid(Range("M" & n), InStr(Range("M" & n), "-") - 7, 1)) = 160) Then

Si par example je me trouve avec cette valleur dans la cellule: COTT-VISCOUNT-9034682 * 866933-03

Le nom du magasin = COTT-VISCOUNT-9034682
Le PO = 866933-03

Mais avec la condition IF, juste a cause que le nom a des -, il me donne un erreur.
 

Discussions similaires

Réponses
21
Affichages
314
Réponses
3
Affichages
276

Statistiques des forums

Discussions
312 321
Messages
2 087 260
Membres
103 498
dernier inscrit
FAHDE