Structure condition

Tonin39 Messages postés 75 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 avril 2006 - 13 avril 2005 à 11:36
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 - 15 avril 2005 à 14:51
bonjour je possede une fiche data avec des chemin de la forme:

soit



C:\CesvaData\2005-04-12_17-13- 57_000_RTA.xls



ou



C:\CesvaData\2005-04-12_17-13-57_000_RT.xls



la différence ce joue au niveau de RT et RTA

jai réalisé un prog qui ouvre ces fichiers un par un mais le pb c que ensuite je fais des traitements sur ces fichiers et que suivant le type RT ou RTA ce traitement change

jaimerais donc que avt douvrir je fasse une structure condition qui me di si RTA alors une sorte de traitement et si RT alors une autre sorte

QUES: comment faire pour que lordi reconnaisse RT ou RTA ds lextension du fichier?

merci de rep svp

voici mon prg:

Sub ouvrirfichier()


Dim z As Double
Dim i As Double
Dim rec As String
Dim col As Double


Application.ScreenUpdating = False
For z = 1 To 100
Worksheets("DATA").Activate
rec = Worksheets("DATA").Cells(z + 1, 1).Value
Cells(z + 1, 1).Select
' si valeur alors faire tt le traitement
If rec <> "" Then
'va chercher la source du fichier lister avec le pgr d'avt
Workbooks.Open Filename:=rec
rec = ActiveWorkbook.Name


'boucle qui copie les données une fois sur 2 puis les colle ds "inter"
For ctr = 11 To 51 Step 2
Windows(rec).Activate
i = (ctr - 8)
Cells(7, ctr).Copy Workbooks("FichesCesva.xls").Sheets("inter").Cells(2, i)
Next ctr
Workbooks(rec).Close


'ensuite on ordonne les données, plus bonne police ds "inter"
Windows("FichesCesva.xls").Activate
Sheets("inter").Select
Range("C2,E2,G2,I2,K2,M2,O2,Q2,S2,U2,W2,Y2,AA2,AC2,AE2,AG2,AI2,AK2,AM2,AO2,AQ2").Copy Range("C4")
Range("C4:W4").Select
With Selection.Font
.Name = "Tahoma"
.Size = 5.5
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
' on copie le traitement
col = z + 1
Selection.Copy
' on colle les données ds la feuille DATA
Sheets("DATA").Select
Cells(col, 3).Select
ActiveSheet.Paste
End If
Next
Sheets("data").Select
End Sub


le traitement et seulement pour les fichiers RTA pr les Rt c plus simple, dc indiquer moi la structure condition a taper svp
salut<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />

11 réponses

nostra78 Messages postés 137 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 6 décembre 2005
13 avril 2005 à 12:03
C pas facil à comprendre.
RT et RTA ne sont pas des extensions mais xls oui.
If RT Then
Instruction
ElseIf RTA then
Instruction
End If
C pas ce que tu veux a mon avis.
Explique un peu mieux, je vois pas tu veux faire des trucs avant d'ouvrir les classuers. Alors qu'est ce qur RT et RTA???????
0
Tonin39 Messages postés 75 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 avril 2006
13 avril 2005 à 12:47
ben sur ma feuille je récupère les chemin dacces de mes fichiers et il y en a qui sont en RT.xls
et dautre en RTA.xls, jaimerais donc que avt douvrir les classeur il y est un test (structure condition), c a dire quon lise la liste de mes chemins dacces et kon dise si c RT alors tel traitement si c RTA alors c autre traitement

ta structure est celle que jenvisageait, mais je ne sais pa comment faire pour ke ds une cellule on reconnaisse si il y a RT ou RTA pour emsuite ouvrir les fichiers et associer le traitement que je veu

voila si ta besoin dautre chose di moi stp
merci et jcompte sur toi
0
nostra78 Messages postés 137 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 6 décembre 2005
13 avril 2005 à 13:04
Donc dans tes cellules tu as

C:\CesvaData\2005-04-12_17-13- 57_000_RTA.xls
ou


C:\CesvaData\2005-04-12_17-13- 57_000_RT.xls

Donc tu fais
If rec Like "C:\CesvaData\2005-04-12_17-13- 57_000_RTA.xls" then
instruction RTA
Else
instruction RT
End If

Je pense que c ce que tu veux
Donne moi des nouvelles
0
Tonin39 Messages postés 75 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 avril 2006
13 avril 2005 à 16:35
non pas vraiment le numéro peut changer moi fo juste ke jtrouve une méthode pr faire la diff entre un RT et RTA

merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
13 avril 2005 à 16:48
Salut,

Si tu as le chemin complet dans tes cellules, essaies :

select case ucase(left$(rec,7))
case "RTA.XLS"

instruction RTA
case "_RT.XLS"
instruction RT
case else
msgbox "type de fichier inconnu"
End select

Loup Gris
0
nostra78 Messages postés 137 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 6 décembre 2005
13 avril 2005 à 16:54
D = Right$(rec, Len(rec) - InStr(rec, "R"))
If D Like "TA.xls" then
instruction RTA
Else
instruction RT
End If
La je pense que c bon
Tiens moi au courant
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
14 avril 2005 à 10:58
Hou là la bourde ! Voilà que je confond ma droite et ma gauche, je ne devais pas être en forme hier.
Bien évidemment, il fallait lire

select case ucase(right$(rec,7))
case "RTA.XLS"
instruction RTA
case "_RT.XLS"
instruction RT
case else
msgbox "type de fichier inconnu"
End select

Loup Gris
0
Tonin39 Messages postés 75 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 avril 2006
14 avril 2005 à 14:58
question:

ca veut dire koi au juste qd tu fait ca: select case ucase(right$(rec,7))
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
14 avril 2005 à 17:28
right$(rec,7), je prend les 7 caractères de droite de la variable rec.
ucase c'est pour mettre en majuscules avant de comparer. Quelquefois, ce n'est pas nécessaire si les instructions qu'on utilise ne font pas la différence entre minuscule et majuscule mais je préfère conserver cette habitude, ça évite pas mal d'erreurs.
select case, ça remplace les if, elseif et autres if imbriqués. C'est plus lisible et plus maintenable.

Loup Gris
0
Tonin39 Messages postés 75 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 avril 2006
15 avril 2005 à 09:14
salut jai essayer ta structure CASE mais qd je compile jai une erreur Next ss for, voici mon code est-ce que kelkun peut me corriger svp:


Sub ouvrirfichier()





Dim z As Double


Dim i As Double


Dim rec As String


Dim col As Double





Application.ScreenUpdating = False


For z = 1 To 100


Worksheets("DATA").Activate


rec = Worksheets("DATA").Cells(z + 1, 1).Value


Cells(z + 1, 1).Select


' si valeur alors faire tt le traitement


Select Case UCase(Right$(rec, 7))





Case "RTA.XLS"


'va chercher la source du fichier lister avec le pgr d'avt


Workbooks.Open Filename:=rec


rec = ActiveWorkbook.Name





'boucle qui copie les données une fois sur 2 puis les colle ds "inter"


For ctr = 11 To 51 Step 2


Windows(rec).Activate


i = (ctr - 8)


Cells(7, ctr).Copy Workbooks("FichesCesva.xls").Sheets("inter").Cells(2, i)


Next ctr


Workbooks(rec).Close





'ensuite on ordonne les données, plus bonne police ds "inter"


Windows("FichesCesva.xls").Activate


Sheets("inter").Select


Range("C2,E2,G2,I2,K2,M2,O2,Q2,S2,U2,W2,Y2,AA2,AC2,AE2,AG2,AI2,AK2,AM2,AO2,AQ2").Copy Range("C4")


Range("C4:W4").Select


With Selection.Font


.Name = "Tahoma"


.Size = 5.5


.Strikethrough = False


.Superscript = False


.Subscript = False


.OutlineFont = False


.Shadow = False


.Underline = xlUnderlineStyleNone


.ColorIndex = xlAutomatic


End With








Case "_RT.XLS"


Workbooks.Open Filename:=rec


rec = ActiveWorkbook.Name


Windows(rec).Activate


Range("B13:V13").Copy Workbooks("FichesCesva.xls").Sheets("inter").Cells(4, 3)


Workbooks(rec).Close


Windows("FichesCesva.xls").Activate


Sheets("inter").Select


Range("C4:W4").Select


With Selection.Font


.Name = "Tahoma"


.Size = 5.5


.Strikethrough = False


.Superscript = False


.Subscript = False


.OutlineFont = False


.Shadow = False


.Underline = xlUnderlineStyleNone


.ColorIndex = xlAutomatic


End With


' on copie le traitement


col = z + 1


Selection.Copy


' on colle les données ds la feuille DATA


Sheets("DATA").Select


Cells(col, 3).Select


ActiveSheet.Paste





Next


Sheets("data").Select


End Sub

merci de rep c urgent

salut
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
15 avril 2005 à 14:51
Tu as oublié le End Select de l'instruction seclect case. A mettre après le bloc d'instruction du case "_RT.XLS"

Loup Gris
0
Rejoignez-nous