Vba extraire une chaine de caractères

Arpette

XLDnaute Impliqué
Bonsoir à toutes et à tous,
en vba, j'ai besoin dans une macro d'extraire une chaine de caractères.
Dans une colonne G à partir de la ligne 4 jusqu'à xx, j'ai une chaine de 21 caractères ( ex: abc123xxxxxxxxxxxxxxx), je souhaiterais extraire 123. J'ai essayé avec mid, mais il doit y avoir un problème dans mon code.

Code:
Dim i As Range
i = 7
For i = 4 To 65536
Val = Mid ("i",3,3)
Next i

Merci de votre aide
 

fhoest

XLDnaute Accro
Re : Vba extraire une chaine de caractères

Bonjour,
dans ton code tu met
Code:
val=mid("i",3,3)
le "i" doit correspondre a ta valeur c'est a dire dans ton exemple "abc123xxxxxxx etc.."
essai comme ceci pour commencer ,
ensuite a part si tu parcours plusieurs cellules je ne vois pas a quoi sert la boucle,mais sans fichier exemple pas facile
A+
 

Arpette

XLDnaute Impliqué
Re : Vba extraire une chaine de caractères

Bonjour,
dans ton code tu met
Code:
val=mid("i",3,3)
le "i" doit correspondre a ta valeur c'est a dire dans ton exemple "abc123xxxxxxx etc.."
essai comme ceci pour commencer ,
ensuite a part si tu parcours plusieurs cellules je ne vois pas a quoi sert la boucle,mais sans fichier exemple pas facile
A+

Bonjour fhoest, merci de me répondre, oui j'ai dans ma colonne G environ 20000 lignes sur lesquelles je veux extraire le 4ème,5ème et 6ème digit. Je stocke ça dans une variable ( Val) que je concatène après avec d'autres valeurs.
Merci de ton aide
@+
 

Modeste

XLDnaute Barbatruc
Re : Vba extraire une chaine de caractères

Bonsoir Arpette, fhoest,

VB:
Sub test()
'Dim i As Range ... plutôt de type Long, si n° de ligne
derligne = Range("G65000").End(xlUp).Row 'Pour éviter de boucler sur 65536 lignes
'i = 7 ... Pourquoi 7, si tu ré-initialise à 4 à la ligne suivante?
For i = 4 To derligne
maValeur = Mid(Range("G" & i).Value, 4, 3) 'Val est aussi le nom d'une Fonction si c'est une variable, la nommer autrement
'Ici, le traitement à effectuer
Next i
End Sub
 

Arpette

XLDnaute Impliqué
Re : Vba extraire une chaine de caractères

Bonsoir Arpette, fhoest,

VB:
Sub test()
'Dim i As Range ... plutôt de type Long, si n° de ligne
derligne = Range("G65000").End(xlUp).Row 'Pour éviter de boucler sur 65536 lignes
'i = 7 ... Pourquoi 7, si tu ré-initialise à 4 à la ligne suivante?
For i = 4 To derligne
maValeur = Mid(Range("G" & i).Value, 4, 3) 'Val est aussi le nom d'une Fonction si c'est une variable, la nommer autrement
'Ici, le traitement à effectuer
Next i
End Sub

Bonjour Modeste, ça marche bien, mais j'ai du nommer la variable "integer" car avec "Range" ça bug. J'ai un autre problème, comme tu pourras le voir dans mon code ci-dessous, quand je boucle je reste sur E4 je ne descends pas. Je dois avoir une erreur dans mes deux boucles.
Merci de ton aide.

Code:
Sub Test()
Dim i As Long
Dim j As Integer
Dim v As Variant
Application.ScreenUpdating = False

Worksheets("Body").Columns("E:E").Insert Shift:=xlToRight
Cells(3, 5) = "PO-Item-ASN" 'insertion d'une colonne pour constituer ma valeur

'supprime toutes les lignes dont la cellule D ne commence pas par M
For l = Range("D65536").End(xlUp).Row To 4 Step -1 'D65536
If InStr(Range("D" & l), "M") = 0 Then Rows(l).Delete
Next l

Nb = Range([D2], [D65536].End(xlUp)).Rows.Count
    For i = 4 To Nb + 1
        Valeur = Split(Cells(i, 4).Text, "/") 'split à /
        
        'extrait les digits 4,5,6 des cellules de la colonne G
        derligne = Range("G65000").End(xlUp).Row
        For j = 4 To derligne + 1
        maValeur = Mid(Range("G" & j).Value, 4, 3)
        
        'constitution de ma valeur
        Cells(i, 5).Value = Valeur(0) & "-" & maValeur & "-" & Cells(i, 24).Value & "-" & Cells(i, 34).Value
        
        'recherche ma valeur
        Cells(i, 11) = Application.VLookup(Cells(i, 5).Value, Workbooks("5-17").Sheets("5-17").Range("H2:W65536"), 16, False) 'définit la recherche
        v = Application.VLookup(Cells(i, 5).Value, Workbooks("5-17.csv").Sheets("5-17").Range("H2:W65536"), 16, False)
        Cells(i, 11) = IIf(IsError(v), "0", v)
        
        Next j
    Next i

Application.ScreenUpdating = True
End Sub
 

raphde

XLDnaute Nouveau
Bonjour,

J'ai un classeur Excel dans lequel je dispose d'un carnet de commande dans la feuille :"Ordres"

La colonne E (Mné) corresponds aux références, je souhaite donc extraire le dernier caractère de chaques cellules de la colonne, et le coller dans la feuille: "Jour" dans la colonne Libéllé.

Je ne m'y connait pas tres bien en VBA c'est la raison pour laquelle je vous sollicite.

je vous remercie d'avance pour votre aide.

Cordialement,
 

Pièces jointes

  • TEST.xls
    40 KB · Affichages: 145
  • TEST.xls
    40 KB · Affichages: 150
  • TEST.xls
    40 KB · Affichages: 149

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 276
Messages
2 086 714
Membres
103 377
dernier inscrit
fredy45