XL 2019 extraire des chiffres de tailles différentes et avec séparateurs différents

Adrien60

XLDnaute Nouveau
Bonjour,
Mon problème est le suivant dans une cellule il est renseigné certains numéro correspondant à des essais et je voudrais récupérer le numéro de ces essais pour traiter les résultats. Le problème est que dans la cellule, il y a un nombre d'essai inconnu compris entre 0 et 1000, les séparateur peuvent être différent, avec ou sans espace.
Exemple: 3 ,78, 23
ou 786-45-231-8
ou 989 ; 9 ; 34 ;256 ; 23
etc.....
Merci pour votre aide,
Adrien
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Adrien, Bonjour PierreJean,
.... avec un peu de retard.
En PJ un essai avec cette macro.
Le séparateur peut être n'importe quoi.
La seule limite est que dans une chaine on utilise toujours le même séparateur.
VB:
Sub Traduit()
Dim DerLig As Integer, c As Integer, N As Integer, Separateur As Variant, tablo
DerLig = Range("A65500").End(xlUp).Row
For i = 1 To DerLig                                 ' pour toutes les lignesd
    chaine = Trim(Cells(i, 1))                      ' extrait la chaine à traiter
    For c = 1 To Len(chaine)                        ' pour tous les caractères
        If Not IsNumeric(Mid(chaine, c, 1)) Then    ' recherche le premier non numérique
            Separateur = Mid(chaine, c, 1)          ' et le considère comme séparateur
            Exit For
        End If
    Next c
    tablo = Split(chaine, Separateur)               ' on sépare la chaine avec ce séparateur
    For N = 0 To UBound(tablo)                      ' et on range chaque nombre
        Cells(i, N + 2) = tablo(N)                  ' dans les colonnes suivantes
    Next N
Next i
End Sub
 

Pièces jointes

  • Essai.xlsm
    16.1 KB · Affichages: 4

Adrien60

XLDnaute Nouveau
Pour continuer sur la lancer je dois a partir de l'extraction des numéros d'essais, grisé les lignes de ses essais sur un autre onglet où j'ai un tableau avec plusieurs colonnes de résultats.
Ci-joint un exemple
 

Pièces jointes

  • exemple adrien.xlsx
    9.7 KB · Affichages: 8

patricktoulon

XLDnaute Barbatruc
bonjour a tous
oui je sais ça fait peur :D :D :D :D :D :D

et si on copiait et coller ailleurs ;)
du texte ,des tableaux je sais plus moi :cool:;)

et si on utilisait un dataobject MAIS!!! en late binding
ok on tente

VB:
Public Function presse_papier_For_Mac_window(sens, Optional T) 'sens :0 pour "in" 1 pour "out"
    With CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
        If sens = 0 Then
            .GetFromClipboard: T = .GetText(1):
        Else
            .SetText T
            .PutInClipboard
        End If
    End With
    'A NOTER QUE L'OBJECT  C'EST LE DATAOBJECT DE VBA QUE L'ON A UNIQUEMENT SI ON MET UN USERFORM
    'MAIS!!!! comme on le crée en late binding(déclaration tardive )ET !!! en anomyme!!!!
    'ben bingo on se passera l'insertion provisoire d'un userform
End Function
Sub test()
    Dim T$, I&, destination
    ActiveSheet.[A1:A4].Copy
    Set destination = ActiveSheet.[B1]
    presse_papier_For_Mac_window 0, T   'on met dans T le contenu du clipboard

    'on modifie les separateurs on les remplace par une tabulation (vbtab)
    separateurs = ",;:-_"    'ajouter ou supprimer les séparateurs que vous voulez
    For I = 1 To Len(separateurs): T = Replace(T, Mid(separateurs, I, 1), vbTab): Next

    Debug.Print T    'juste pour voir 'c'est donc du text!!!!!!!

    'on remet le text modifié dans le clipboard
    presse_papier_For_Mac_window 1, T

    'on colle tel quel en B1
    'suprisesurprise !!!!! c'est pas du texte mais bien un tableau
    With destination: .Select: .Parent.Paste: End With


End Sub
T c'est un string ou un tableau je sais plus moi
c'est a en perdre le nord ;) :D :D ;)
HOH!!! LA belle conversion silencieuse
démonstration
demo6.gif
 

Discussions similaires

Statistiques des forums

Discussions
312 237
Messages
2 086 486
Membres
103 232
dernier inscrit
logan035