Bonjour,
Je voudrais comment faire l'opération S01 + 1 avec VBA pour trouver la semaine suivante (S02) ?
Merci.
Version imprimable
Bonjour,
Je voudrais comment faire l'opération S01 + 1 avec VBA pour trouver la semaine suivante (S02) ?
Merci.
salut
Code:
1
2
3
4
5
6
7
8 Sub incremente() partiefixe = "S0" For i = 1 To 3 MsgBox partiefixe & i Next i End Sub
Voici mes données de départ :
MCM000004 S03 IN/VP4CFF-1A471 S07 10 000
MCM000004 S06 IN/VP4CFF-1A471 S07 12 000
Je voudrais insérer les lignes en rouge :
MCM000004 S03 IN/VP4CFF-1A471 S07 10 000
MCM000004 S04 IN/VP4CFF-1A472 S07 10 000
MCM000004 S05 IN/VP4CFF-1A473 S07 10 000
MCM000004 S06 IN/VP4CFF-1A471 S07 12 000
Merci
et elle est ou la question ?:P
SAlut
Et la date elle est avant ou après le IN ?
Hein non j'ai pas compris la question c'est ça?:aie:
[Edit]
Bon tes chaines sont de longueur fix ? je presume.
Comment s'organisent elles dans ton fichier?
[/Edit]
A++
Qwaz
Comment créer la même ligne que la ligne précédente juste en incrémentant le numéro de semaine en faisant par ex S06 + 1 ?
Re
Je sais que ca va pas coller avec ce que tu veux ... mais si tu donne pas plus d'infos... on peut pas devinerCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 Sub test() 'MCM000004 S03 IN/VP4CFF-1A471 S07 10 000 'Attention ca marche que si la longueur de chaine est fixe Dim NSemaine As Integer Dim LaChaine As String Dim NewChaine As String 'On initialise LaChaine = "MCM000004 S03 IN/VP4CFF-1A471 S07 10 000" 'On recupert la valeur de la semaine NSemaine = CInt(Mid(LaChaine, 12, 2)) 'On incremente NSemaine = NSemaine + 1 'On format le tout NewChaine = Left(LaChaine, 11) + Format(NSemaine, "00") + Right(LaChaine, 27) End Sub
Met un fichier pour voir comment sont organisées tes données.
A++
Qwaz
Bonsoir,
Il me semble que tu devrais éclaircir avec précision un point !
Tes :
Représentent-ils, chacun, le contenu d'une seule cellule ou représentents-ils le contenu (sur une même ligne) de plusieurs colonnes différentes ?Citation:
MCM000004 S03 IN/VP4CFF-1A471 S07 10 000
MCM000004 S04 IN/VP4CFF-1A472 S07 10 000
MCM000004 S05 IN/VP4CFF-1A473 S07 10 000
MCM000004 S06 IN/VP4CFF-1A471 S07 12 000
Cette précision est tout de même importante, non ? (et la précision de l'expression accompagne en général celle du code ...)
Une autre question aussi, y'a pas que la semaine qui s'incremente..
Au faite, mes données de départ sont (données par cellules) :
N°CDE - Sem modif. - Produit - Sem Liv. - Qté
MCM000004 - S03 - IN/VP4CFF - S07 - 10 000
MCM000004 - S06 - IN/VP4CFF - S07 - 12 000
Je voudrais insérer les lignes avec S04, S05, S07 pour donner :
N°CDE - Sem modif. - Produit - Sem Liv. - Qté
MCM000004 - S03 - IN/VP4CFF - S07 - 10 000
MCM000004 - S04 - IN/VP4CFF - S07 - 10 000
MCM000004 - S05 - IN/VP4CFF - S07 - 10 000
MCM000004 - S06 - IN/VP4CFF - S07 - 12 000
MCM000004 - S07 - IN/VP4CFF - S07 - 12 000
Le but est d'analyser les différentes modif faites jusqu'à la semaine de livraison. Mon soucis est que vba ne peut pas calculer S01 + 1, incompatible de données !!! :?
Il te suffit alors :
1) d'ajouter tes lignes par copie à l'identique
puis
2) de modifier la valeur de la 2ème colonne comme indiqué plus haut par alsimbad. (une astuce: relever d'abord la ligne originelle avant copie puis, à la place du i de la boucle de alsimbad, utiliser la différence entre le n0 de la ligne rajoutée et celui de la ligne originelle...;) Et (pour ne pas de faire de croche-pieds, ne pas traiter tous tes rajouts différents d'un seul coup ... commencer par une ligne originelle ==>> copier et rajouter tes lignes ==>> traiter les lignes rajoutées ===>> aller à la ligne suivante (qui devient la nouvelle ligne originelle) et appliquer le même mécanisme... et ainsi de suite, pardi...)
A toi de jouer avec ces éléments...
Petit soucis, il me crée une ligne avec S06 alors que cette ligne existe déja...
N°CDE - Sem modif. - Produit - Sem Liv. - Qté
MCM000004 - S03 - IN/VP4CFF - S07 - 10 000
MCM000004 - S04 - IN/VP4CFF - S07 - 10 000
MCM000004 - S05 - IN/VP4CFF - S07 - 10 000
MCM000004 - S06 - IN/VP4CFF - S07 - 10 000
MCM000004 - S06 - IN/VP4CFF - S07 - 12 000
Comment lui dire s'il existe un enregistrement pour la semaine suivante, il faut sortir de la boucle ? Quelque chose comme :
Code:
1
2
3 Do... If 'Sem_modif.value + 1' = Sem_modif.value.offset(1,0) then exit do Loop
Euh...
Il me semble qu'avant d'insérer au dessous de la ligne :
la ligne qui la suit est encore :Code:MCM000004 - S03 - IN/VP4CFF - S07 - 10 000
Tu peux donc la lire (sa 2ème colonne) avant insertion (S06) et en extraire la valeur des 2 derniers caractère (06 ==>> 6), non ?Code:MCM000004 - S06 - IN/VP4CFF - S07 - 12 000
Et décider alors (de n'ajouter que les lignes correspondant aux valeurs 4 (03 +1) jusqu'à 5 (6-1) par une simple boucle !
Quel est le problème ?
J'ai du loupé une étape...
Je revois mon code !!!