Fonction mid() excel vba

Signaler
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
-
Messages postés
14
Date d'inscription
mercredi 10 juin 2009
Statut
Membre
Dernière intervention
10 juillet 2009
-
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

Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
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.
Messages postés
14
Date d'inscription
mercredi 10 juin 2009
Statut
Membre
Dernière intervention
10 juillet 2009

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