chemin de programmation dans une cellule

VELO

XLDnaute Nouveau
bonjour a tous,
j'ai besoin aide sur une programmation je souhaite inscrire le chemin dans la feuille TARIFAIRE celulle A1



dans mon exemple ci dessous ma macro fonctionne correctement "chemin inscrit en dur"

d'avance merci de votre aide

code:
Code:
Sub EXPORT()


Application.ScreenUpdating = False

R = MsgBox("Vous voulez importer les Relevés de Prix ? ", vbYesNo + vbQuestion, "EXTRACTION DES RELEVES")
If R = vbYes Then

With ActiveWorkbook
.Sheets("TARIFAIRE").Unprotect
End With

Dim W As String
i = 9
W = Dir("C:\Documents and Settings\FRNTO2M\Bureau\TEST\*.xls")
Do Until W = ""
i = i + 1
Workbooks.Open Filename:="C:\Documents and Settings\FRNTO2M\Bureau\TEST\" & W
If i = 110 Or i = 112 Then i = i + 2
Worksheets(1).Unprotect ("AZERTY")
'or boeuf
ActiveWorkbook.Sheets(1).Range("c3:c5").Select
Selection.Copy
Application.Windows("TONY.xls").Activate
Cells(5, i).Activate
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Cells(5, i).Validation.Delete
Cells(6, i).Validation.Delete
Cells(7, i).Validation.Delete
Windows(2).Activate
Application.CutCopyMode = False

'le magasin
Range("d5:d6").Select
Selection.Copy
Application.Windows("TONY.xls").Activate
Cells(9, i).Activate
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Cells(9, i).Validation.Delete
Cells(10, i).Validation.Delete
Windows(2).Activate
Application.CutCopyMode = False

Worksheets(1).Protect ("AZERTY")

Application.Windows(1).Activate
ActiveWorkbook.Close savechanges:=False
W = Dir
Loop


End If


Sheets("TARIFAIRE").Select

Application.ScreenUpdating = True


End Sub
Code:
 
Dernière édition:

tbft

XLDnaute Accro
Re : chemin de programmation dans une cellule

Bonjour

J'ai peur de ne pas avoir compris..
Tu veux que "TARIFAIRE" des lignes Sheets("TARIFAIRE") proviennent du contenue de la cellule A1...
Si c'est le cas, en début de macro
nom_folio=ActiveSheet.range("A1").value
puis remplace Sheets("TARIFAIRE") par Sheets(nom_folio)
A condition que la valeur contenue par la cellule A1 corresponde bien à un nom de feuille...
 

Gorfael

XLDnaute Barbatruc
Re : chemin de programmation dans une cellule

Salut VELO et le forum
Utilise les balises de code (#)
Code:
Sub EXPORT()
Dim W As String

Application.ScreenUpdating = False

R = MsgBox("Vous voulez importer les Relevés de Prix ? ", vbYesNo + vbQuestion, "EXTRACTION DES RELEVES")
If R = vbYes Then
    With ActiveWorkbook
        .Sheets("TARIFAIRE").Unprotect
    End With

    i = 9
    W = Dir("C:\Documents and Settings\FRNTO2M\Bureau\TEST\*.xls")
    Do Until W = ""
        i = i + 1
        Workbooks.Open Filename:="C:\Documents and Settings\FRNTO2M\Bureau\TEST\" & W
        If i = 110 Or i = 112 Then i = i + 2
        Worksheets(1).Unprotect ("AZERTY")
        'or boeuf
        ActiveWorkbook.Sheets(1).Range("c3:c5").Copy
        Application.Windows("TONY.xls").Activate
        Cells(5, i).PasteSpecial Paste:=xlPasteValues
        Cells(5, i).Validation.Delete   'pas sûr de sa nécessité
        Cells(6, i).Validation.Delete
        Cells(7, i).Validation.Delete
        Windows(2).Activate

        'le magasin
        Range("d5:d6").Copy
        Application.Windows("TONY.xls").Activate
        Cells(9, i).PasteSpecial Paste:=xlPasteValues
        Cells(9, i).Validation.Delete
        Cells(10, i).Validation.Delete
        Windows(2).Activate
        
        Worksheets(1).Protect ("AZERTY")
        Application.Windows(1).Activate
        ActiveWorkbook.Close savechanges:=False
        W = Dir
    Loop
End If
Application.CutCopyMode = False

Sheets("TARIFAIRE").Select

Application.ScreenUpdating = True

End Sub
Tout de suite plus facile à lire.
j'ai besoin aide sur une programmation je souhaite inscrire le chemin dans la feuille TARIFAIRE celulle A1
Comme je n'ai pas trouvé le chemin de ton classeu,r contenant la feuille TARIFAIRE, en dur, j'ai juste "simplifié" (sans la tester, mes variables étant à déclaration obligatoire), ton code (je pourrai peut-être faire plus, mais pas sans quelques infos de plus).

Donc des remarques :
Si A1 contient, par exemple "C:\Documents and Settings\FRNTO2M\Bureau\TEST\", on peut faire, pour la ligne
Code:
Workbooks.Open Filename:="C:\Documents and Settings\FRNTO2M\Bureau\TEST\" & W
juste
Code:
Workbooks.Open Filename:=[A1] & W
À condition que la feuille active soit celle qui ait le chemin.

Personnellement, utiliser "Windows(2).Activate" ne me plait pas : les ordres des fenêtres peuvent être si facilement changés... Je préfère utiliser Workbook("nom classeur").
Je n'aime pas non plus user du Activate : ça ralentit les macros, et c'est rarement utile

Donner un code c'est bien. Mais on n'est ni concepteur du code, ni utilisateur de la macro : ce qu'elle doit faire n'est évident que pour ceux-là ! Pour les autres, il faut expliquer.
T'as qu'à voir les différences de raisonnement entre tbft (salut) et moi...

Tu ouvres des fichiers xls. je sais, je suis bordélique, mais mes dossiers contiennent quelques fois des fichiers qui n'ont rien à y faire. Et quand je fais une macro, j'essaie d'en tenir compte, ce qui m'oblige à faire systématiquement un détrompeur de nom, totalement inutile la plupart du temps, mais tellement miraculeux quand ça merde.

Déclarer des variables uniquement quand tu les utilises n'est pas "profitable". VBA fait toujours une première passe pour leurs réserver de la mémoire. Il vaut mieux toutes les grouper au début. Dans un code long, tu retrouves plus facilement les déclarations.
A+
 
Dernière édition:

VELO

XLDnaute Nouveau
Re : chemin de programmation dans une cellule

Salut VELO et le forum
Utilise les balises de code (#)
Code:
Sub EXPORT()
Dim W As String

Application.ScreenUpdating = False

R = MsgBox("Vous voulez importer les Relevés de Prix ? ", vbYesNo + vbQuestion, "EXTRACTION DES RELEVES")
If R = vbYes Then
    With ActiveWorkbook
        .Sheets("TARIFAIRE").Unprotect
    End With

    i = 9
    W = Dir("C:\Documents and Settings\FRNTO2M\Bureau\TEST\*.xls")
    Do Until W = ""
        i = i + 1
        Workbooks.Open Filename:="C:\Documents and Settings\FRNTO2M\Bureau\TEST\" & W
        If i = 110 Or i = 112 Then i = i + 2
        Worksheets(1).Unprotect ("AZERTY")
        'or boeuf
        ActiveWorkbook.Sheets(1).Range("c3:c5").Copy
        Application.Windows("TONY.xls").Activate
        Cells(5, i).PasteSpecial Paste:=xlPasteValues
        Cells(5, i).Validation.Delete   'pas sûr de sa nécessité
        Cells(6, i).Validation.Delete
        Cells(7, i).Validation.Delete
        Windows(2).Activate

        'le magasin
        Range("d5:d6").Copy
        Application.Windows("TONY.xls").Activate
        Cells(9, i).PasteSpecial Paste:=xlPasteValues
        Cells(9, i).Validation.Delete
        Cells(10, i).Validation.Delete
        Windows(2).Activate
        
        Worksheets(1).Protect ("AZERTY")
        Application.Windows(1).Activate
        ActiveWorkbook.Close savechanges:=False
        W = Dir
    Loop
End If
Application.CutCopyMode = False

Sheets("TARIFAIRE").Select

Application.ScreenUpdating = True

End Sub
Tout de suite plus facile à lire.
Comme je n'ai pas trouvé le chemin de ton classeu,r contenant la feuille TARIFAIRE, en dur, j'ai juste "simplifié" (sans la tester, mes variables étant à déclaration obligatoire), ton code (je pourrai peut-être faire plus, mais pas sans quelques infos de plus).

Donc des remarques :
Si A1 contient, par exemple "C:\Documents and Settings\FRNTO2M\Bureau\TEST\", on peut faire, pour la ligne
Code:
Workbooks.Open Filename:="C:\Documents and Settings\FRNTO2M\Bureau\TEST\" & W
juste
Code:
Workbooks.Open Filename:=[A1] & W
À condition que la feuille active soit celle qui ait le chemin.

Personnellement, utiliser "Windows(2).Activate" ne me plait pas : les ordres des fenêtres peuvent être si facilement changés... Je préfère utiliser Workbook("nom classeur").
Je n'aime pas non plus user du Activate : ça ralentit les macros, et c'est rarement utile

Donner un code c'est bien. Mais on n'est ni concepteur du code, ni utilisateur de la macro : ce qu'elle doit faire n'est évident que pour ceux-là ! Pour les autres, il faut expliquer.
T'as qu'à voir les différences de raisonnement entre tbft (salut) et moi...

Tu ouvres des fichiers xls. je sais, je suis bordélique, mais mes dossiers contiennent quelques fois des fichiers qui n'ont rien à y faire. Et quand je fais une macro, j'essaie d'en tenir compte, ce qui m'oblige à faire systématiquement un détrompeur de nom, totalement inutile la plupart du temps, mais tellement miraculeux quand ça merde.

Déclarer des variables uniquement quand tu les utilises n'est pas "profitable". VBA fait toujours une première passe pour leurs réserver de la mémoire. Il vaut mieux toutes les grouper au début. Dans un code long, tu retrouves plus facilement les déclarations.
A+

bonsoir Gorfael bonsoir le forum
tout d'abord merci d'avoir pris un peu de temps pour me repondre
toutefois en modifiant la macro comme tu me l'as expliqué elle ne fonctionne pas rien ne se passe
PS: mon fichier se nome TONY et le chemin se trouve dans une feuille nommer TARIFAIRE

Dim W As String
i = 9
W = Dir("[A1]*.xls")
Do Until W = ""
i = i + 1
Workbooks.Open Filename:=[A1] & W
If i = 110 Or i = 112 Then i = i + 2

merci
 

VELO

XLDnaute Nouveau
Re : chemin de programmation dans une cellule

bonjour TBFT, bonjour le forum,
je que je souhaite dans ma programmation c'est que mon fichier "TONY" ouvre des fichiers XLS dans un dossier copy une partie de cellule et les colle dans mon fichier TONY sur la feuille TARIFAIRE.
en revanche je souhaite que le chemin d'acces a se dossier soit inscrit dans une cellule A1 de la feuille TARIFAIRE
c'est a dire je lance ma macro elle se dirige dans mon dossier ayant toutes mes fichiers xls a copier grace au chemin inscrit dans la cellule A1 de la feuille TARIFAIRE

merci d'avance.
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
158

Statistiques des forums

Discussions
312 508
Messages
2 089 136
Membres
104 044
dernier inscrit
petitchan