Macro de tri

Bonjour a tous je suis a la recherche d'aide concernant le tri de données issue d'une machine 3D.

Ci joint un exemple avec 2 cas

7exemple.xlsx (405.50 Ko)

Le but serais de crée une nouvelle colonne avec le numéro de pièce mesurer et une autre avec la date de la mesure sachant que j'ai entre 5 et 30 mesures sur une pièce.

Actuellement on sait que l'on passe a la pièce suivante quand on arrive sur une ligne N00XX DATE =JJ-MM-AA HH MM

Je suis novice dans excel niveau macro et VBA mais si vous avez des pistes je suis preneur !

Pas tout compris mais pour ton but il te suffit de parcourir ta première colonne et de déconcaténer (STXT() ) tes valeurs lorsque t'arrives sur une nouvelle pièce style :

j=1

while cells(i,1)<>""

if cells(i,1) like "*N0047* then

date=STXT(cells(i,1);22,14)

cells(i,2)=date

cells(i,1)="N* Piece : " & j

j=j+1

end if

i=i+1

wend

Hey bien j'avais tenté quelque chose dans ce sens mais cela ne marchais pas du tout pour plusieurs raisons selon moi :

  • Le numéro (N0047) n'est pas tout le temps le même (j'ai environ 200 programmes différents)
  • Les personnes qui on codé la 3D ne mont pas facilité la tache en m'étant des N00XX sur des ligne de mesure spécifique ( Cas2 du excel ligne A34 a A41 il s'agit de mesure d'angle spécial mais toujours sur la même pièce)

Pour être plus explicite : (Je pense que mon problème est vraiment basique mais je ne voie pas comment le résoudre ^^)

Création de 2 colonnes(on vas dire A pour la date et B pour le numéro de pièce => Ma macro "regarde" ma feuille => Elle reporte la date dans la colonne A ( sans la partie heure) et un numéro en B ( numéro qui s’incrémente a chaque nouvelle pièce).

Le soucis que j'ai c'est la détection de la nouvelle pièce selon moi a cause des différent programme et des teste a l'interieur. Je ne peux donc pas simplement lui demander "tu détecte un N => STXT moi ça :p"

En tout cas merci de ton retour !

Ok, une solution que je te propose c'est de stocker tes infos dans un tableau :

Tu parcours ta feuille, à chaque fois que tu tombes sur un nom, tu vérifies s'il existe dans ton tableau

Dim monTab ()

ReDim monTab (1)
monTab (1) = Cells(x,x).Value

i = 1
'Parcours les lignes, il y a mieux à faire pour chercher la dernière ligne du tableau mais je me rappelle pas sur le moment

While Cells(i, 1) <> ""
erreur = 0

    For j = 1 To UBound(monTab , 1)
    'test si la velur de la cellule existe deja dans mon tableau
        If Cells(i, 1).Value = monTab (j) Then
            erreur = 1
        End If
    Next

    'si elle n'existe pas ajout
    If erreur = 0 Then
        tailleTab = UBound(monTab , 1)
        ReDim Preserve monTab(tailleTab + 1)
        monTab(tailleTab + 1) = Cells(i, 1).Value
    else
    'Supprimer ligne ou whatever
    End If

i = i + 1
Wend

Je ne sais pas si ça peut t'aider ?

EDIT :

Je viens de me rendre compte d'une erreur : tu ne peux que redimensionner un tableau non statique (dont la taille n'a pas été déclaré)

De plus j'avais foiré ma boucle héhé

Jamais tester les tableaux je vais voir si j'arrive a faire quelque chose a partir de ça et je reviens .

Bon désolé mais ça ne marche pas je dois louper quelque chose ^^

Sans plus de précision on pourra pas t'aider

Je n'arrive pas a utiliser les tableaux tout simplement :p

4exemple2.xlsm (641.11 Ko)

Voici le même fichier en mode "final" avec la méthode que j'utilise actuellement ( de bon vieux =SI et une première macro qui réalise ça automatique via assistant création) et l'autre partie qui ne marche pas avec les tableaux .

Cela permet de mieux comprendre ma problématique vu que si j'ai un test d'un autre type que N00* cela ne marche pas ^^ (mes tests sont compris entre N001 et N0999) sachant que j'ai des mesures spéciales sur la même plage (Merci les devs :p)

Rechercher des sujets similaires à "macro tri"