Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1025 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1170265
JBLCN
Posté le 04-08-2005 à 23:37:30  profilanswer
 

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
mood
Publicité
Posté le 04-08-2005 à 23:37:30  profilanswer
 

n°1170299
ryosakasak​i7777
Posté le 05-08-2005 à 06:14:28  profilanswer
 

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

n°1170309
phosphorus​68
Pseudo à n°
Posté le 05-08-2005 à 07:38:50  profilanswer
 

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
n°1170321
JBLCN
Posté le 05-08-2005 à 08:38:51  profilanswer
 

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 !

n°1170324
AlainTech
Pas trouvé? Cherche encore!
Posté le 05-08-2005 à 08:39:46  profilanswer
 

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!
n°1170325
AlainTech
Pas trouvé? Cherche encore!
Posté le 05-08-2005 à 08:45:47  profilanswer
 

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!
n°1170326
AlainTech
Pas trouvé? Cherche encore!
Posté le 05-08-2005 à 08:49:05  profilanswer
 

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!
n°1171312
JBLCN
Posté le 06-08-2005 à 16:43:21  profilanswer
 

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
 

n°1171314
AlainTech
Pas trouvé? Cherche encore!
Posté le 06-08-2005 à 16:48:14  profilanswer
 

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!

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 

Sujets relatifs
[MySQL] Problème de recherche sur 3 tables[MySQL]pb requete[Resolu]
[php] perte de connexion dans un include [resolu][Resolu] Améliorer les performances
[SGBD/SQL] - MYSQL - champ datetime et now() par defaut[php] Objet COM pour excel ou word
[MySQL]Récupérer un seul enregistrement[Résolu] Récupérer valeur oui/non
Problème BDD MySQL chez Free 
Plus de sujets relatifs à : [RESOLU] VB/EXCEL/manipulation de données pour transfert MySql


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR