Copier vers une autre colonne après conversion

Nyepalo

XLDnaute Junior
Bonjour tous,

Je sollicite votre aide par ce que je ne sais vraiment l'écrire en VBA.
J'ai dans la colonne B des codes génériques de 31 caractères qui sont à re-codifier en fonction du contenu de chaque cellule de la colonne B, pour obtenir un code transformé de 16 caractères à écrire dans chaque cellule opposée de la colonne D.

Ici nous re-codifions seulement les codes de la colonne B dont le nombre de caractères = 31
Le code d'une cellule de la colonne B dont les 5 premiers caractères à partir de la gauche donnent "01EST"
Si les 5 premiers caractères à partir de la gauche sont <> "01EST" et le nombre de caractères = 31, recopier le code sans transformation dans la cellule opposée de D.

Je joins mon fichier test

Merci d'avance.
 

Pièces jointes

  • Test conversion.xlsm
    17.3 KB · Affichages: 24

tototiti2008

XLDnaute Barbatruc
Re : Copier vers une autre colonne après conversion

Bonjour Nyepalo,

peut-être

Code:
Sub Convers()
Dim RefA As String, RefB As String, i As Long
    With Worksheets("Feuil1")
        For i = 2 To .Range("B" & .Rows.Count).End(xlUp).Row
            RefA = .Cells(i, 2).Value
            
            If Len(RefA) = 31 Then
                If Left(RefA, 5) = "01EST" Then
                    RefB = Mid(RefA, 2, 3) & Mid(RefA, 11, 3) & "26" & Mid(RefA, 14, 8)
                Else
                    RefB = RefA
                End If
                .Range("d" & i).Value = RefB
            End If
        Next
    End With
MsgBox "fait !"
End Sub
 

Nyepalo

XLDnaute Junior
Re : Copier vers une autre colonne après conversion

Bonjour tototiti2008,

Je suis dans l'obligation de remettre la discussion en surface par ce que j'ai une grosse surprise dont je n'ai ni explication ni solution depuis déjà 2 h.
J'ai mis les données sur une autre feuille nommée "Feuil3" en changeant les colonnes, j'exécute mon code correspondant, rien ne marche. Le code se déroule pourtant bien dans Feuil1 avec les colonnes F et G.

Code:
Sub Convers3()

Dim RefA As String, RefB As String, i As Long
    With Worksheets("Feuil3")
        For i = 2 To .Range("F" & .Rows.Count).End(xlUp).Row
        .Range("F:F").NumberFormat = "@"
            RefA = .Cells(i, 2).Value
            
            If Len(RefA) = 31 Then
                If Left(RefA, 5) = "01EST" Then
                    RefB = Mid(RefA, 2, 3) & Mid(RefA, 11, 3) & "26" & Mid(RefA, 14, 8)
                Else
                    RefB = RefA
                End If
                Range("g" & i).NumberFormat = "@"
                .Range("g" & i).Value = RefB
            End If
        Next
    End With
MsgBox "fait !"
End Sub

Ce code marche parfaitement avec Feuil1. Où se trouve le problème ?
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 505
Messages
2 089 070
Membres
104 020
dernier inscrit
Mzghal