Eclater cellule Excel

Bonjours à tous !

Question pour un novice

Je dispose d'un fichier Excel dont le premier champs contient des valeurs sous un format N-01-B-0601.

Je voudrai maintenant éclater la cellule dans les colonnes suivantes à ce que j'ai par colonnes consécutives :

N (dans le première colonne) 01 (suivante) b (seul dans sa case) 06 (dans la même case) 01 (dans la dernière)

Et pour tout autre format différent de celui de départ N-01-B-0601. remplir les cases du message erreur.

Voila j’espère mettre fait compris et qu'il y aura quelqu'un pour m'aider !!!!!!

Merci d'avance !!!!!

Bonsoir,

Envoie une feuille représentative

qu'on puisse faire des tests

Amicalement

Claude

Bonjour

Voici le fichier joint.

Coordialement

bonjour,

à la dernière ligne

D-01-D0103

il n'y a pas de tiret après le 2ème D

c'est voulu ou c'est une erreur ?

Claude

Oui c'est volontaire. S'il y avait un tiret je pense que la fonction convertir réglerai le problème

Bonjour.

Salut Claude

Avec quelques formules

cordialement

Bonjours à tous !

Merci pour le fichier Amadéus, je suis entrain de l'analyser !

Coordialement


Salut !

Merci à vous Armadeus et dubois pour le fonction , elle marche bien niquel !

Bonsoir à tous,

à tout hasard, voici 2 codes VBA

en reprenant les formules de Amadéus

Amicalement

Claude

Bonjour à tous !

Merci dubois pour ton fichier vb, je dois faire recours à du vb et non aux formules excel ! par rapport au traitement du champs erreur, j'aimerai obtenir un autre résultat que celui du message "erreur" que je joint dans le fichier excel (toutes mes excuses encore pour le travail )

Question pour ma compréhension :

=SI(A2="";"";SI(OU(CODE(A2)<65;CODE(A2)>90);"erreur";STXT(SUBSTITUE(A2;CAR(45);"");2;2)))

si A2 vide laisser vide, si la valeur de A2 est différente d'une lettre afficher "erreur" , mais pour le reste ??????

cela m'aidera aussi pour la compréhension du code vb

Merci encore !!!!!!!!!!!!!!!!

Bonjour

J'ai mis l'explication détaillée dans ce fichier

Cordialement

Merci pour ta réponse Armadeus

Mais cette partie je l'ai bien comprise, c'est plutôt le reste de la formule :STXT(SUBSTITUE(A15;CAR(45);"");4;1)

et maintenant je veux traiter le cas de l'erreur autrement comme je l'ai indiqué dans le fichier joint ci dessus.

Bien que je dois le faire en vb Si je comprends le reste de ta formule cela m'aidera !!!!

Merci !!!!!!!!!!!!!

Bonjour

exemple

A2=N-01-B-0601

=STXT(SUBSTITUE(A2;CAR(45);"");4;1)

STXT renvoie un nombre de caractères de la cellule, à partir de la position indiquée et du nombre de caractères indiqués

SUBSTITUE remplace dans une chaine de texte le texte indiqué par un nouveau texte

Donc

=SUBSTITUE(A2;CAR(45);"")

remplace le CAR(45) par rien (le CAR 45 étant le -) et renvoie

=N01B0601

et

=STXT("N01B0601";4;1)

Renvoie 1 caractère à partir du 4ème, ici B

L'aide d'Excel sur ces fonctions t'aurait apporté l'explication sans attendre

Cordialement

Bonsoir,

En remplacement de "erreur",

Quelle est la logique de la colonne "D" (Travee) ?

c'est pas le 1er chiffre de gauche ?

pourquoi 9 en "D9") pour 89502 !

ce nombre est-il toujours composé de 5 chiffres en numérique ?

à te relire

Bonsoir Amadéus

Claude

Bonjours à tous !

9 en "D9" pour 89502 ! c'est une erreur de ma part , toutes mes excuses c'est plutôt 8 en D9 .Et le nombre est toujours de 5 chiffres !

Coordialement

Bonjour,

finalement, je n'utilise plus le CODE

=SI(OU(CODE(A2)<65;CODE(A2)>90).....,

je tiens compte du 1er caractère (numérique ou non)

Sub Eclate_2()
Dim Lg%, i%
    Application.ScreenUpdating = False
    Lg = Range("a" & Rows.Count).End(xlUp).Row

    For i = 2 To Lg
      If Not IsEmpty(Cells(i, "a")) Then                    'si colonne "A" non vide
        If IsNumeric(Left(Cells(i, "a"), 1)) Then           'si commence par un chiffre
          Cells(i, "b") = "^" & "z"
          Cells(i, "d") = "^" & Left(Cells(i, "a"), 1)
          Cells(i, "f") = "^" & "01"
          Cells(i, "h") = "^" & Mid(Cells(i, "a"), 2, 2)
          Cells(i, "j") = "^" & Right(Cells(i, "a"), 2)
        Else
          Cells(i, "b") = "^" & Left(Cells(i, "a"), 1)
          Cells(i, "d") = "^" & Mid(Application.Substitute(Cells(i, "a"), "-", ""), 2, 2)
          Cells(i, "f") = "^" & Mid(Application.Substitute(Cells(i, "a"), "-", ""), 4, 1)
          Cells(i, "h") = "^" & Mid(Application.Substitute(Cells(i, "a"), "-", ""), 5, 2)
          Cells(i, "j") = "^" & Right(Cells(i, "a"), 2)
        End If
      End If
    Next i
        Range("m2:m" & Lg).ClearContents
        Application.Goto Range("a1"), Scroll:=True
End Sub

à tester

Claude

Bonjour à tous !

j'ai testé ton code il marche bien ! merci encore pour la disponibilité ,le code et les explications

Vous êtes forts les gars !

Merci !!!!!!!!!!!!!

Rechercher des sujets similaires à "eclater"