Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/10/2011, 12h25   #1
 
Inscription : avril 2009
Messages : 52
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 52
Points : -1
Points : -1
Par défaut commande DIR sous MAC OS

Bonjour,

Voici une ligne de ma macro
Code :
1
2
3
4
 
If Left(Dir("MACINTOSH HD:USERS:anne:Desktop:BDD1.xls"), 4) <> "BDD." Then
      MsgBox "pas de fichier"
    End If

Je n'arrive pas à avoir le bon chemin d'acccès pour ma commande DIR sous MAC. Est ce que quelqu'un peut me confirmer la bonne syntaxe ainsi que petite macro très simple donnant lieu à l'ouverture d'un autre fichier par exemple.

De plus dans ma ligne le 4 n'est pas disponible sous mac mais lorsque je mets 0 ou 2 cela ne fonctionne pas non plus.

Merci de votre aide
vivi
Merci
vivi21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 12h59   #2
Expert Confirmé
 
Homme Philippe
ex Observeur CGG / Analyste prog.
Inscription : juin 2006
Messages : 1 708
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Localisation : France, Finistère (Bretagne)

Informations professionnelles :
Activité : ex Observeur CGG / Analyste prog.

Informations forums :
Inscription : juin 2006
Messages : 1 708
Points : 3 633
Points : 3 633
Salut, voir l'aide en ligne [F1]
__________________
Pensez à Voter, d'avance merci. ( Pouces en bas à la droite de Citer )
Balisez votre code après l'avoir indenté sous Excel via Smart Indenter
Autre utilitaire : MZ Tools 3.0 VBA

Contribution : Excel / Word / PDF avec Adobe Acrobat Pro / PDFCreator 1 2
kiki29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 13h37   #3
 
Inscription : avril 2009
Messages : 52
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 52
Points : -1
Points : -1
J'ai regardé l'aide mais sans succès.
vivi21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 17h19   #4
Membre régulier
 
Inscription : novembre 2004
Messages : 130
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 130
Points : 75
Points : 75
bonjour,
dans le cas présent quand vous écrivez
Code :
1
2
 
if Left(Dir("MACINTOSH HD:USERS:anne:Desktop:BDD1.xls"), 4) <> "BDD."
le 4 se rapport au left pas au dir

Essayez ça peut être que ...
Code :
1
2
 
if Left(Dir("MACINTOSH HD:USERS:anne:Desktop:BDD1.xls", MacID("XLS5")), 4) <> "BDD."
Souhaitant vous avoir aidé
olaxius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 17h36   #5
Expert Confirmé
 
Homme Philippe
ex Observeur CGG / Analyste prog.
Inscription : juin 2006
Messages : 1 708
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Localisation : France, Finistère (Bretagne)

Informations professionnelles :
Activité : ex Observeur CGG / Analyste prog.

Informations forums :
Inscription : juin 2006
Messages : 1 708
Points : 3 633
Points : 3 633
re,sur PC qqch comme , à adapter sur MAC
je n'en ai plus sous la main depuis des lustres
et toijours [F1]
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
Option Explicit
 
Sub SelFichier()
Dim sChemin As String
    sChemin = ThisWorkbook.Path
 
    With Application.FileDialog(msoFileDialogFilePicker)
        .InitialFileName = sChemin & Application.PathSeparator
        .Title = "Sélectionner le fichier TXT"
        .AllowMultiSelect = False
        .ButtonName = "Sélection Fichier"
        .Filters.Add "Texte", "*.txt"
        .Show
        If .SelectedItems.Count > 0 Then
            DoEvents
            sNomFichierImport = .SelectedItems(1)
            ' .....
        End If
    End With
End Sub
__________________
Pensez à Voter, d'avance merci. ( Pouces en bas à la droite de Citer )
Balisez votre code après l'avoir indenté sous Excel via Smart Indenter
Autre utilitaire : MZ Tools 3.0 VBA

Contribution : Excel / Word / PDF avec Adobe Acrobat Pro / PDFCreator 1 2
kiki29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/11/2011, 11h43   #6
 
Inscription : avril 2009
Messages : 52
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 52
Points : -1
Points : -1
Merci olaxius, la ligne fonctionne mais j'ai des souci dans le suite de mon code qui fonctionne sur PC. Pouvez vous m'aiguiller davantage voilà l'erreur sur la ligne suivante :

Code :
1
2
 
LigneCible = Workbooks("MACINTOSH HD: Users: annedusart: Desktop: BDD.xls").Worksheets("BDD").Range("A65535").End(xlUp).Row + 1
Il me met un
Citation:
erreur d'execution 9 indice n'appartient pas à la sélection
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
Sub Transfert_CT()
Dim LigneCible As Long, ligneOrigine As Long
Dim LigneFin As Long
Dim Données As Variant
Dim Nom As String
Dim Mois As String
Dim Trimestre As String
Dim Année As String
Dim Nbjoursmois As String
Dim Nbconges As String
Dim Nbformation As String
Dim Nbtrav As String
Dim Pointeur As Long
 
 
'Lecture des infos dans la fiche de saisie
Nom = ThisWorkbook.Worksheets("fiche_activite").Range("B3").Value
Mois = ThisWorkbook.Worksheets("fiche_activite").Range("E3").Value
Trimestre = ThisWorkbook.Worksheets("fiche_activite").Range("E4").Value
Année = ThisWorkbook.Worksheets("fiche_activite").Range("E5").Value
Nbjoursmois = ThisWorkbook.Worksheets("fiche_activite").Range("D6").Value
Nbconges = ThisWorkbook.Worksheets("fiche_activite").Range("D8").Value
Nbformation = ThisWorkbook.Worksheets("fiche_activite").Range("D10").Value
Nbtrav = ThisWorkbook.Worksheets("fiche_activite").Range("D12").Value
LigneFin = ThisWorkbook.Worksheets("fiche_activite").Range("A2000").End(xlUp).Row
Données = ThisWorkbook.Worksheets("fiche_activite").Range("A16:e" & LigneFin)
 
'Ecriture dans l'onglet Base de données BDD
 
' Le chemin sera à modifier en fonction de l'application
 
  If Left(Dir("MACINTOSH HD:USERS:anne:Desktop:BDD.xls", MacID("XLS5")), 4) <> "BDD." Then
 
  Workbooks.Add
  Worksheets.Add
  ActiveSheet.Name = "BDD"
  Worksheets("BDD").Range("A1") = "Nom"
  Worksheets("BDD").Range("B1") = "Mois"
  Worksheets("BDD").Range("C1") = "Trimestre"
  Worksheets("BDD").Range("D1") = "Année"
  Worksheets("BDD").Range("E1") = "Nbjoursmois"
  Worksheets("BDD").Range("F1") = "Nbconges"
  Worksheets("BDD").Range("G1") = "Nbformation"
  Worksheets("BDD").Range("H1") = "Nbtrav"
 
  ThisWorkbook.Worksheets("fiche_activite").Range("A15:E15").Copy Destination:=Worksheets("BDD").Range("I1:M1")
 
  ActiveWorkbook.SaveAs Filename = "MACINTOSH HD: Users: annedusart: Desktop:BDD.xls"
 Else
 Workbooks.Open Filename = "MACINTOSH HD: Users: annedusart: Desktop: BDD.xls"
End If
LigneCible = Workbooks("MACINTOSH HD: Users: annedusart: Desktop: BDD.xls").Worksheets("BDD").Range("A65535 :AA65535").End(xlUp).Row + 1
 
Select Case Mois
   Case "Janvier", "Février", "Mars"
      Trimestre = "T1"
 Case "Avril", "Mai", "Juin"
    Trimestre = "T2"
Case "Juillet", "Aoüt", "Septembre"
    Trimestre = "T3"
Case "Octobre", "Novembre", "Décembre"
    Trimestre = "T4"
End Select
 
' Boucle répétitive pour le nom
For Pointeur = LigneCible To LigneCible + UBound(Données) - 1
 Range("BDD!A" & Pointeur) = Année
 Range("BDD!B" & Pointeur) = Trimestre
Range("BDD!C" & Pointeur) = Mois
Range("BDD!D" & Pointeur) = Nom
Range("BDD!E" & Pointeur) = Nbjoursmois
Range("BDD!F" & Pointeur) = Nbconges
Range("BDD!G" & Pointeur) = Nbformation
Range("BDD!H" & Pointeur) = Nbtrav
Next Pointeur
'Copie globale de la zone saisie
Workbooks("BDD.xls").Worksheets("BDD").Range("I" & LigneCible & ":M" & LigneCible + UBound(Données) - 1) = Données
Workbooks("BDD.xls").Close True
 
End Sub
Merci de votre aide
vivi21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/11/2011, 12h24   #7
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
Bonjour,

pour agir sur ton classeur utilise une variable de type workbook et évite les Active... select...


par exemple pour créer un classeur + une feuille :

Code :
1
2
3
4
5
6
 Dim wk As Workbook
 Dim sh As Worksheet
   Set wk = Workbooks.Add
   Set sh = wk.Worksheets.Add()
   sh.Name = "BDD"
   wk.SaveAs "Toto.xls"
pour ouvrir un classeur existant


Code :
1
2
3
4
 Dim wk As Workbook
   Dim sh As workSheet
   Set wk = Workbooks.open ("Toto.xls")'A adapter au MAC
   set  sh = wk.WorkSheets("BDD")

ensuite ta ligne devient

Code :
LigneCible = sh.Range("A65535").End(xlUp).Row + 1
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 16h07   #8
 
Inscription : avril 2009
Messages : 52
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 52
Points : -1
Points : -1
Cela fonctionne partiellement. Par contre cela m'écrase le fichier BDD à chaque fois que je valide par le bouton action.

Il me crée un fichier FALSE ou il y a la premiere ligne nom, mois, trimestre et rien d'autre et ensuite un fichier BDD ou il y a les données des lignes A16 :E37. Du coup je pourrais éventuellement garder le fichier BDD mais à chaque fois que je valide la macro il m'écrase le fichier BDD au lieu d'ajouter les données à la suite.

Comment faire ? merci de votre aide précieuse.
vivi

Voici le code
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
 
Sub Transfert_CT()
Dim LigneCible As Long, ligneOrigine As Long
Dim LigneFin As Long
Dim Données As Variant
Dim Nom As String
Dim Mois As String
Dim Trimestre As String
Dim Année As String
Dim Nbjoursmois As String
Dim Nbconges As String
Dim Nbformation As String
Dim Nbtrav As String
Dim Pointeur As Long
Dim wk As Workbook
Dim sh As Worksheet
'Dim MyNewWbk As Workbook, BDDFeuille As Worksheet
 
'Lecture des infos dans la fiche de saisie
 
 
'With Worksheets("BDD")
 '  .Range("B3") = "Nom"
  ' .Range("B1") = "Mois"
   '.Range("C1") = "Trimestre"
   '.'Range("D1") = "Année"
   '.Range("E1") = "Nbjoursmois"
   '.Range("F1") = "Nbconges"
   '.Range("G1") = "Nbformation"
   '.Range("H1") = "Nbtrav"
'End With
 
Nom = ThisWorkbook.Worksheets("fiche_activite").Range("B3").Value
Mois = ThisWorkbook.Worksheets("fiche_activite").Range("E3").Value
Trimestre = ThisWorkbook.Worksheets("fiche_activite").Range("E4").Value
Année = ThisWorkbook.Worksheets("fiche_activite").Range("E5").Value
Nbjoursmois = ThisWorkbook.Worksheets("fiche_activite").Range("D6").Value
Nbconges = ThisWorkbook.Worksheets("fiche_activite").Range("D8").Value
Nbformation = ThisWorkbook.Worksheets("fiche_activite").Range("D10").Value
Nbtrav = ThisWorkbook.Worksheets("fiche_activite").Range("D12").Value
LigneFin = ThisWorkbook.Worksheets("fiche_activite").Range("A2000").End(xlUp).Row
Données = ThisWorkbook.Worksheets("fiche_activite").Range("A16:e" & LigneFin)
 
'Ecriture dans l'onglet Base de données BDD
 
' Le chemin sera à modifier en fonction de l'application
'CheminBdd = "HD:BDD.xls"
'Dir("Chemin d'accès", MacID("TEXT"))
 ' If Left(Dir("HD:Users:anne:Desktop:BDD.xls", MacID("XLS ")), 4) <> "BDD." Then
If Left(Dir("MACINTOSH HD:USERS:anne:Desktop:BDD.xls", MacID("XLS5")), 4) <> "BDD." Then
 
  Workbooks.Add
  Worksheets.Add
  ActiveSheet.Name = "BDD"
  Worksheets("BDD").Range("A1") = "Nom"
  Worksheets("BDD").Range("B1") = "Mois"
  Worksheets("BDD").Range("C1") = "Trimestre"
  Worksheets("BDD").Range("D1") = "Année"
  Worksheets("BDD").Range("E1") = "Nbjoursmois"
  Worksheets("BDD").Range("F1") = "Nbconges"
  Worksheets("BDD").Range("G1") = "Nbformation"
  Worksheets("BDD").Range("H1") = "Nbtrav"
 
  ThisWorkbook.Worksheets("fiche_activite").Range("A15:E15").Copy Destination:=Worksheets("BDD").Range("I1:M1")
 
 
 
  ActiveWorkbook.SaveAs Filename = "MACINTOSH HD: Users: anne: Desktop:BDD.xls"
   Set wk = Workbooks.Add
   Set sh = wk.Worksheets.Add()
   sh.Name = "BDD"
   wk.SaveAs "BDD.xls"
 Else
  Workbooks.Open Filename = "MACINTOSH HD: Users: anne: Desktop: BDD.xls"
   Set wk = Workbooks.Open("BDD.xls")
   'A adapter au MAC
   Set sh = wk.Worksheets("BDD")
End If
'LigneCible = Workbooks("MACINTOSH HD: Users: annedusart: Desktop: BDD.xls").Worksheets("BDD").Range("A65535 :AA65535").End(xlUp).Row + 1
LigneCible = sh.Range("A65535").End(xlUp).Row + 1
 
 
 
Select Case Mois
   Case "Janvier", "Février", "Mars"
      Trimestre = "T1"
 Case "Avril", "Mai", "Juin"
    Trimestre = "T2"
Case "Juillet", "Aoüt", "Septembre"
    Trimestre = "T3"
Case "Octobre", "Novembre", "Décembre"
    Trimestre = "T4"
End Select
 
' Boucle répétitive pour le nom
For Pointeur = LigneCible To LigneCible + UBound(Données) - 1
 Range("BDD!A" & Pointeur) = Année
 Range("BDD!B" & Pointeur) = Trimestre
Range("BDD!C" & Pointeur) = Mois
Range("BDD!D" & Pointeur) = Nom
Range("BDD!E" & Pointeur) = Nbjoursmois
Range("BDD!F" & Pointeur) = Nbconges
Range("BDD!G" & Pointeur) = Nbformation
Range("BDD!H" & Pointeur) = Nbtrav
Next Pointeur
'Copie globale de la zone saisie
Workbooks("BDD.xls").Worksheets("BDD").Range("I" & LigneCible & ":M" & LigneCible + UBound(Données) - 1) = Données
Workbooks("BDD.xls").Close True
 
End Sub
vivi21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h09.


 
 
 
 
Partenaires

Hébergement Web