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

XL 2010 Scinder Array "Libellé (numérique - chaîne)"[RESOLU]

  • Initiateur de la discussion Initiateur de la discussion cathodique
  • 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 !

cathodique

XLDnaute Barbatruc
Bonjour,

Je voudrais transférer 2 plages de données vers une autre feuille.

Pour la 1ère plage pas de difficulté.

Pour la seconde, je l’ai mise dans un tableau T_data que je transfère d’abord dans un tableau T_report.
Mon problème est le suivant, T_Data(i, 2) contient un code de 4 chiffre suivi d’un libellé
(exemple : 6010 Nourriture animale).
Je voudrais scinder le code du libellé dans T_Report(i, 3) et T_Report(i, 4);
6010 sera mis dans T_Report(i, 3) et Nourriture animale dans T_Report(i, 4)

En vous remerciant par avance.
EDIT:
VB:
T_Report(i, 3) = Val(T_Data(i, 2))  'resultat: 6010
T_Report(i, 4) = Right(T_Data(i, 2), (Len(T_Data(i, 2)) - Len(T_Report(i, 3)) - 1))  'resultat: Nourriture animale
En mettant Len(Val(T_Data(i, 2))-1) à la place de Len(T_Report(i, 3)) - 1), le code plante sur Val avec message : erreur de compilation Variable requise: Impossible de l'affecter à cette expression.
 
Dernière édition:
Merci Thebenoit59,

En fait, ma bête noire est la manipulation des chaînes de caractères. J e suis pas sûr à 100% que le résultat sera fiable. Effectivement, avec ce que j'ai comme données, pour le moment les résultats sont bons.

J'ai obtenu ce résultat à tâtons, un peu "beaucoup" tiré par les cheveux. Il me semble que mon code n'est pas très "orthodoxe".

J'ai mis la plage de données dans un tableau (pour aller plus vite) et dans T_data(i,2) il y a une chaîne constituée d'un code numérique au début suivi d'un libellé.

Alors le but était de séparer le numérique de l'alphabétique. Ton avis?
 
Dernière édition:
VB:
Option Explicit
Sub sep()
Dim i As Byte, txt$, code!, libel$
txt = [a1].Value
For i = 1 To Len(txt)
    If IsNumeric(Mid(txt, i, 1)) Then
        code = Val(Mid(txt, i, Len(txt) - i + 1))
        libel = Trim(Right(txt, Len(txt) - (Len(code) + i)))
        Exit For
    End If
Next i
End Sub
Ton code ne prend en considération que la cellule A1, de plus il sort de la boucle juste après code, libel n'est pas traité.

Autre chose cette notation "code!" dans la déclaration des variables veut dire quoi? Integer, long, ...

Merci quand même. Bonne soirée.
 
Oui c'est normal pour [A1] et la sortie de boucle.
Je n'ai pas réalisé de boucles ne connaissant pas ton code de base, et je sors de la boucle quand j'ai trouvé le code, car il n'y a plus d'intérêt de continuer.
libel est bien traité, ajoute :

Code:
 debug.print code & " " & libel

à la fin du code et tu verras les résultats.

Le "!" correspondant à un single.

La boucle s'effectue sur les différents caractères du texte et pas sur une liste de texte.
 
VB:
For i = 1 To UBound(T_Data, 1) '
        T_Report(i, 1) = CDate(T_EnTete(2, 5))           'dateEcrit
        T_Report(i, 2) = T_EnTete(2, 6)    'N° Ecrit
        '''''scinde code du libellé'''''''''''''''''''''''
        T_Report(i, 3) = Val(T_Data(i, 1))  'N°Compte  '*****
        T_Report(i, 4) = Right(T_Data(i, 1), (Len(T_Data(i, 1)) - Len(T_Report(i, 3)) - 1))   'Libellé ****
Next i
Mon code est dans une boucle for i.... next i (je n'ai laissé que quelques lignes pour ne pas trop encombrer).
En fait, je travaille sur des tableaux. Merci, de m'avoir mis sur la bonne voie.

J'avais écrit T_Report(i, 4) = Right(T_Data(i, 1), (Len(T_Data(i, 1)) - Len(Val(T_Data(i, 1)) ) - 1))
Mais ça planté sur Val mais en remplaçant par T_Report(i, 3) alors que T_Report(i, 3) = Val(T_Data(i, 1)) mais ça passé.
C'est pour cette raison que j'ai eu des doutes.

Je vais essayer d'adapter ton code.

Encore merci et bonne soirée
 
- 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

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