Recherche d'un chemin d'accès sur VBA qui se copie sur le code
Bonjour à tous,
Je travaille sur un dossier modèle d'offre de prix que j'enregistre à chaque fois sous un autre nom.
J'ai crée une macro dans ce dossier qui transfert ma proforma vers le dossier des commandes, et une fois fait, et que je lance le générateur de commande avec un tcd, j'ouvre le fichier Commande interne, qui va être transférer en production. je voudrai revenir sur mon premier dossier ma commande pour copier un autre fichier sur le dossier commande interne qui est s'ouvre en dernier. Le programme marche jusqu'à ce je lui demande de revenir sur le premier dossier, car je n'arrive pas à lui mettre un chemin d'accès qui se génère automatiquement, après avoir enregistré mon dossier modèle.
Mon idée (si c'est faisable), c'est de pouvoir récupèrer le chemin d'accès (hors messagerie car je n'arrive pas à l'utiliser) et l'inscrire quelque part pour qu'au bout du programme il puisse le récupérer.
Je ne sais pas si suis assez clair :(
Je suis vraiment débutant :( et je vous remercie pour toute l'aide que vous pourriez m'apporter, car je bug vraiment depuis un moment.
'Voila mon programme
COMMANDE Macro
Dim cheminDossier As String
cheminDossier = ThisWorkbook.Path
' Afficher le chemin d'accès
MsgBox "Le chemin de votre dossier de travail est : " & cheminDossier
Dim cheminStocke As String
cheminStocke = cheminDossier
Sheets("Prof 000-24").Activate
' Ne pas afficher les lignes dont la colonne C est vide
Range("M31:W41").AutoFilter Field:=10, Criteria1:="<>0"
'Selectionner toutes les cellules pleines
Set MaPlage = Range("M32:W" & Range("m65536").End(xlUp).Row).SpecialCells(xlVisible)
' Copier la plage définie
MaPlage.Copy
'Activer le dossier Affaire
Dim chemin As String, nomFichier As String
chemin = "C:\Users\XXXXX\Documents\YYYYY\AFFAIRES\AFFAIRE\"
nomFichier = "2024 DOSSIER AFFAIRE.xlsm"
Workbooks.Open Filename:=chemin & nomFichier
Sheets("Commande en cours 2024").Activate
' Sélectionner la première ligne vide
With Range("A4") ' On se base sur la cellule A4.
If .Offset(1, 0) = "" Then ' Si la cellule A5 est vide,
.Offset(1, 0).Select ' alors on sélectionne la cellule vide,
Else ' sinon,
.End(xlDown).Offset(1).Select ' on sélectionne la première ligne sous la dernière ligne non vide.
End If
End With
' Coller le contenu du presse-papier, à partir de la cellule selectionnée
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Dim ws As Worksheet
Dim lastRow As Long
' Définir la feuille de calcul active
Set ws = ActiveSheet
' Trouver la dernière ligne non vide dans la colonne A
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
' Vérifier si la dernière cellule est vide
If ws.Cells(lastRow, 1).Value = "" Then
' Si elle est vide, sélectionner la cellule juste au-dessus
ws.Cells(lastRow - 1, 1).Select
Else
' Si la dernière cellule n'est pas vide, sélectionner la dernière cellule non vide
ws.Cells(lastRow, 1).Select
End If
' Sélectionner la dernière cellule non vide
'derniereCellule.Select
Selection.Copy
Sheets("Générateur BCE").Activate
Range("L10").Select
ActiveCell.Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
' Sortir du mode "Copie"
Application.CutCopyMode = False
'Sub FiltrerTCD()
Dim gen As Worksheet
Dim pt As PivotTable
Dim pf As PivotField
Dim valeurFiltre As String
' Définir la feuille de calcul contenant le TCD
Set gen = Sheets("Générateur BCE") ' Remplacez par le nom de votre feuille
' Définir le tableau croisé dynamique
Set pt = gen.PivotTables("Tableau croisé dynamique1") ' Remplacez par le nom de votre TCD
pt.RefreshTable
' Définir le champ à filtrer
Set pf = pt.PivotFields("N°Cde MM") ' Remplacez par le nom du champ que vous souhaitez filtrer
' Définir la valeur à filtrer (par exemple, à partir d'une cellule ou d'une donnée externe)
valeurFiltre = Sheets("Générateur BCE").Range("L10").Value ' Remplacez par la cellule contenant la valeur
' Appliquer le filtre
With pf
.ClearAllFilters ' Effacer les filtres existants
.CurrentPage = valeurFiltre ' Appliquer le nouveau filtre
End With
Là je voudrais revenir sur mon premier fichier (départ du code), mais comme c'est un dossier modèle, si je met sur ce code particulier le nom du fichier sur lequel je travaille, il ne sera plus valable lorsque j'ouvrirai une autre session d'offre de prix :(
cheminStocke = cheminDossier
Sheets("Recap prix").Activate
Range("A40,K58").Select
Selection.Copy
chemin = "C:\Users\Nabil.Guiza\Documents\xxxxx\"
nomFichier = "000-24 COMMANDE xxxx TRAVAIL 1.xlsm"
Workbooks.Open Filename:=chemin & nomFichier
Sheets("COMMANDE CLIENT").Activate
Range("K10").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Subedit modo : codes mis entre balises </>, merci d'y penser à l'avenir
Hello,
Pas sur d'avoir compris mais pour revenir sur ton fichier de depart et donc de code :
ThisWorkbook.activateBonjour Bonjour Rag02700,
Oui, bah c'est bien ça :( désolé d'avoir déranger tout le monde pour si peu, mais tout fonctionne.
Dans ma logique, je m'étais dit que le curseur était dans un autre dossier à la dernière ligne, et qu'il ne reconnaitrait pas le chemin arrière. Bah je me suis trompé, j'aurais du vérifier.
En tout cas je vous remercie vivement.
Cordialement
Aller sur le classeur de la macro :
ThisWorkbook.activateClasseur à l'ecran :
ActiveWorkbooket aller sur un autre classeur :
Workbooks("toto.xlsx").Activatea+