Fonction mid() excel vba

avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 - 7 juil. 2009 à 15:48
cs_nandinho Messages postés 14 Date d'inscription mercredi 10 juin 2009 Statut Membre Dernière intervention 10 juillet 2009 - 8 juil. 2009 à 13:31
Bonjour a tous.


J'ai besoin de votre aide sur unscripte.


Voici mon problème.


Sur la feuille "Test", j'ai plusieurs lignes qui contiennent des données importées d'un fichier .dat.


Donc dans la cellule A2 en descendant, j'ai des données comme ceci:

G1511301230ND$$8.37 5070109N


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


Le 01517 = numéro du magasin.


Ensuite, après la lettre G, les 2 premiers chiffres: 15 égale le numéro de département.


Ensuite, la section 11301230 égale Livraison du début (Heure) suivi de Livraison fin (Heure)


Ses mêmes informations se retrouvent dans la feuille 04.


Je voulais que chaque ligne de la feuille test soit corrigée par la feuille 04.


Prenon l'exemple si:

Feuille test

G1511301230ND$$8.37 5070109N
G1711301230ND$$8.53 5070109N


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Feuille 04


Magasin Département Livraison début (Journée) Livraison du début
(Heure) Livraison Fin (Jour) Livraison fin (Heure)

01517 15 Mon 07:00 Mon 09:00

01517 17 Thu 07:00 Thu 09:00


Donc je retrouve le même numéro de magasin, le même numéro de
département, sauf que les heures ne sont pas identiques. La macro doit
prendre les heures de la feuille 04 et les changer dans la feuille test.


Résultat final:

G1507000900ND$$8.37 5070109N
G1707000900ND$$8.53 5070109N

La premiere heure débute a la position 51 jusqu'a 54, et le 2ieme partie est 55 jusqu'a 58.

De 51 à 54 doit avoir la valeur de la colonne V de la feuille 04, s'il a la valeur du magasin et du département.

De 55 à 58, il doit avoir la valeur de la colonne X de la feuille 04, s'il a la valeur du magasin et du département.

Donc selon le magasin et le numéro de département de la feuille 04, les heures vont changer.

Cette fonction dois ce faire sur chaque ligne de la feuille Test.


Comment faire s.v.p

Merci pour votre aide.

2 réponses

us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
7 juil. 2009 à 23:52
Bonsoir,

Si tu veux mon avis, tu devrais déjà importé ton fichier .dat, dans différentees colonnes, ce qui faciletera la recherche... Il suffit d'utiliser comme indentificateur [espace] lors de l'importation.
Ensuite il restera à utiliser une fonction de recherche comme MID...

Amicalement,
Us.
0
cs_nandinho Messages postés 14 Date d'inscription mercredi 10 juin 2009 Statut Membre Dernière intervention 10 juillet 2009
8 juil. 2009 à 13:31
Bonjour,
Si les heures définitives de livraison sont dans la feuille ("04") colonnes X et Y
Si les données à remplacer sont dans la feuille("teste") colonnes A avec une ligne de titres
Je fais une boucle sur le nombre de lignes à traiter et je remplace chaque ligne.
Bien sur, je remplace les dois points (:) de l'heure par rien, je concatène les deux heures (début et fin de livraison), avec la fonction "MID" je remplace les anciennes données (heures) par les nouvelles et enfin je remplace le contenu initiale de la cellule par le résultat des opérations précédentes ... avant de passer à la ligne suivante




Sub debut_teste()
Sheets("teste").Select
nbre_lignes = Application.WorksheetFunction.CountA(Sheets("teste").Range("a:a"))
For chaque_ligne = 2 To nbre_lignes
heure_debut = Right(Sheets("04").Cells(chaque_ligne, 24), 5)
heure_debut = Replace(heure_debut, ":", "")


heure_fin = Right(Sheets("04").Cells(chaque_ligne, 25), 5)
heure_fin = Replace(heure_fin, ":", "")
heures = heure_debut & heure_fin
donnee_a_changer = Sheets("teste").Cells(chaque_ligne, 1)
donnee_modifie = Mid(donnee_a_changer, 1, 37) & heures & Mid(donnee_a_changer, 46)
Cells(chaque_ligne, 1).Value = donnee_modifie
Next
End Sub

Bon courage pour la suite
0