[RESOLU] VB/EXCEL/manipulation de données pour transfert MySql

VB/EXCEL/manipulation de données pour transfert MySql [RESOLU] - VB/VBA/VBS - Programmation

Marsh Posté le 04-08-2005 à 23:37:30    

Bonjour à tous
 
Je suis assez nul en VBA. je dois développer une base PHP/MySql (que je connais bien) mais je dois avent cela traiter un fichier de dates assez mal concu.
 
Ce fichier renferme des années :
 
1997>>>année 1997
1992-1994>>> années 1992, 1993 et 1994
1991-1997>>années 1991,1992,1993,1994,1995 et 1996
>2001 >> années 2001 et suivantes..
 
 
Je dois sélectioner des lignes par rapport à une année. J'ai séparé ces données en tableau à trois colonnes :
 
Reprenons les lignes ci-dessus :
 
Colonne A                    ColonneB            Colonne C
""                            1997
1992                          1994
1991                          1997
2006                          2001        
 
 
Ainsi trois cas de figures pour le contenu des champs de la colonne C:
 
B-A=B  alors C=B
 
B-A=i>0  alors C=A,A+1,A+2,.....A+i  
 
B-A=j<0 alors C=A,A-1, A-2,....A-j
 
 
 
Ceci bien sur pour des milliers de lignes...
 
 
Je pourrais écrire cet algorythme en PHP mais il me parait plus logique de traiter le fichier en entrée car peu de modifs sont à attendre.
 
Encoree une fois je ne connais hélas pas le VB. Si vous pouviez m'aider ou me donner des pistes...Je pense à deux boucles imbriquées (i et j)
 
Merci d'avance...
 
JBLCN


Message édité par JBLCN le 08-08-2005 à 23:48:13
Reply

Marsh Posté le 04-08-2005 à 23:37:30   

Reply

Marsh Posté le 05-08-2005 à 06:14:28    

salut JBLCN,
En faite je voudrais bien t'aider mais je n'ai pas tout a fait saisie ce que tu veux faire , est ce que tu veux passer par Excel pour traiter ton fichier?
Donc si c ca ,tu veux le mettre sous trois colonnes excel.
Mais est ce que tu pourrais mettre les 10 premieres lignes de ton fichier pour voir la syntaxe merci.
est ce vraiment ca textuellement?
(1997>>>année 1997  
1992-1994>>> années 1992, 1993 et 1994  
1991-1997>>années 1991,1992,1993,1994,1995 et 1996  
>2001 >> années 2001 et suivantes.. )
 
PS: lme resultat que je comprends pour la colonne C du dernier cas et bien :
2006,2005,2004,2003,2002,2001
et non pas :2001,2002,2003,2004,2005,2006

Reply

Marsh Posté le 05-08-2005 à 07:38:50    

Des formules dans Excel devraient suffire ...
Comme on est pas limité à 3 colonnes, autant utiliser des résultats intermédiaures après la colonne C ou D pour aérer
 
 
 
EDIT: ce sont des années yyyy ou bien des dates jj/mm/aaaa (hh:mm) ? :??:


Message édité par phosphorus68 le 05-08-2005 à 07:40:20
Reply

Marsh Posté le 05-08-2005 à 08:38:51    

Bonjour à tous !
 
Je n'ai pas été clair, milles excuses.
 
Je souhaite traiter ce fichier par Excel. PHP interviendra plus tard...
Voici quelques lignes du fichier :
 
 
Modèle année
1 >1992
2 1989
3 >1992
4 1988 - 1992
5 1988 - 1992
6 1990 - 1994
7 1985 - 1987
8 1987 - 1992
9 1983 - 1985
 
 
 
la ligne 1 suppose les années 1992 et suivantes.
La ligne 2 l'année 1989
Le ligne 4 suppose les années 1988, 89,90,91 et 92
 
Grand merci de votre aide !

Reply

Marsh Posté le 05-08-2005 à 08:39:46    

2 posts dans 2 forums différents...
 
Pour ne pas faire de jaloux, réponse dans les 2 forums:

Sub YearSplit()
  Dim iI As Integer
  Dim iStep As Integer
  Dim rRange As Range
  Dim sBuffer As String
  Dim vCell As Variant
  Set rRange = Range([A1], Cells(Cells.SpecialCells(xlLastCell).Row, 1))
  For Each vCell In rRange
    sBuffer = "'"         ' Apostrophe sert à forcer la cellule en Texte
    If IsNumeric(vCell) Then
      MsgBox (CInt(Val(vCell) < Val(vCell.Offset(0, 1))))
      If Val(vCell) < Val(vCell.Offset(0, 1)) Then
        iStep = 1
      Else
        iStep = -1
      End If
      For iI = Val(vCell) To Val(vCell.Offset(0, 1)) Step iStep
        sBuffer = sBuffer & CStr(iI) & ","
      Next iI
      sBuffer = Left(sBuffer, Len(sBuffer) - 1)   ' Suppression de la dernière virgule
    Else
      sBuffer = sBuffer & CStr(vCell.Offset(0, 1))
    End If
    vCell.Offset(0, 2) = sBuffer
  Next vCell
End Sub


Message édité par AlainTech le 05-08-2005 à 08:41:17

---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
Reply

Marsh Posté le 05-08-2005 à 08:45:47    

JBLCN a écrit :

Modèle année
1 >1992
2 1989
3 >1992
4 1988 - 1992
5 1988 - 1992
6 1990 - 1994
7 1985 - 1987
8 1987 - 1992
9 1983 - 1985
 
la ligne 1 suppose les années 1992 et suivantes.
La ligne 2 l'année 1989
Le ligne 4 suppose les années 1988, 89,90,91 et 92


Là, les données changent en cours de route...
 
Quand tu dis "et suivantes", ça suppose jusqu'où???


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
Reply

Marsh Posté le 05-08-2005 à 08:49:05    

De plus, je me suis basé sur le fait que quand il n'y avait qu'une année, elle était en colonne B.


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
Reply

Marsh Posté le 06-08-2005 à 16:43:21    

Merci AlainTech !
 
Ta séquence est nickel chrome..
 
J'ai traité 12000 lignes en moins d'une minute.
 
Merci de ton aide rapide et efficace
 
Amitiés
 

Reply

Marsh Posté le 06-08-2005 à 16:48:14    

Pense à mettre le tag résolu sur Developpez, par courtoisie.


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed