TextBox et récupération d'info
Bonjour,
Est ce que qqn pourrait me donner un petit coup de main svp ?
Je dois récupérer l'information depuis un textbox (TextBox2 ==> fichier source / TextBox3 ==> fichier destination ) page suivi fichier suppression pour modifier l'emplacement de mes fichiers dans le code ( l'utilisateur le saisie manuellement sur la page suivi).
' Ouvrir le fichier source
Set fichierSource = Workbooks.Open("C:\XXX\suppression-DBC.xlsm")
' Ouvrir le fichier de destination
Set fichierDestination = Workbooks.Open("C:\XXX\Copie 1.xlsm"Sub CopierCollerEtEnregistrer()
Dim fichierSource As Workbook
Dim fichierDestination As Workbook
Dim feuilleSource As Worksheet
Dim feuilleDestination As Worksheet
Dim cheminDestination As String
Dim valeurRecherche As String
Dim plageRecherche As Range
Dim cel As Range
Dim derniereligne As Long
' Ouvrir le fichier source
Set fichierSource = Workbooks.Open("C:\XXXX\suppression-DBC.xlsm")
' Référencer la feuille source
Set feuilleSource = fichierSource.Worksheets("Suivi")
' Obtenir le nombre de lignes dans le tableau 4
derniereligne = feuilleSource.Range("A" & feuilleSource.Rows.Count).End(xlUp).Row
' Parcourir chaque ligne du tableau 4 sauf la dernière ligne
For i = 2 To derniereligne ' Commencer à partir de la 2ème ligne pour exclure les en-têtes
' Rechercher la valeur dans la feuille "Suivi"
valeurRecherche = feuilleSource.Range("A" & i).Value
' Vérifier si valeurRecherche est vide
If valeurRecherche <> "" Then
' Ouvrir le fichier de destination
Set fichierDestination = Workbooks.Open("C:\XXXXX\Copie 1.xlsm")
' Référencer la feuille destination
Set feuilleDestination = fichierDestination.Worksheets("Suppression FID")
' Copier les valeurs de la source
feuilleDestination.Range("C5").Value = feuilleSource.Range("A" & i).Value
feuilleDestination.Range("B5").Value = feuilleSource.Range("B" & i).Value
feuilleDestination.Range("M5").Value = feuilleSource.Range("C" & i).Value
feuilleDestination.Range("E5").Value = feuilleSource.Range("D" & i).Value
feuilleDestination.Range("G5").Value = feuilleSource.Range("F" & i).Value
feuilleDestination.Range("L5").Value = feuilleSource.Range("G" & i).Value
feuilleDestination.Range("K5").Value = feuilleSource.Range("H" & i).Value
' Rechercher la valeur dans la feuille "Récupération info"
valeurRecherche = feuilleSource.Range("A" & i).Value
Set plageRecherche = fichierSource.Worksheets("Récupération info").Range("D2:D" & fichierSource.Worksheets("Récupération info").Cells(Rows.Count, "D").End(xlUp).Row)
' Effacer les valeurs existantes dans les cellules N5 et O5
feuilleDestination.Range("N5").Value = ""
feuilleDestination.Range("O5").Value = ""
' Parcourir la colonne D et copier les valeurs correspondantes dans la cellule N5
For Each cel In plageRecherche
If cel.Value = valeurRecherche Then
If feuilleDestination.Range("N5").Value = "" Then
feuilleDestination.Range("N5").Value = cel.Offset(0, -3).Value
Else
feuilleDestination.Range("N5").Value = feuilleDestination.Range("N5").Value & "/" & cel.Offset(0, -3).Value
End If
End If
Next cel
' Parcourir la colonne D et copier les valeurs correspondantes dans la cellule O5
For Each cel In plageRecherche
If cel.Value = valeurRecherche Then
If feuilleDestination.Range("O5").Value = "" Then
feuilleDestination.Range("O5").Value = cel.Offset(0, -1).Value
Else
feuilleDestination.Range("O5").Value = feuilleDestination.Range("O5").Value & "+" & cel.Offset(0, -1).Value
End If
End If
Next cel
' Enregistrer le fichier de destination avec le nom de valeurRecherche
Dim nomFichier As String
Dim cheminDossier As String
Dim cheminFichier As String
Dim doublons As Boolean
' Récupérer le chemin du dossier à partir du TextBox2
cheminDossier = ThisWorkbook.Sheets("Suivi").TextBox2.Value
' Vérifier si le nom de fichier existe déjà
nomFichier = valeurRecherche & ".xlsm"
cheminFichier = cheminDossier & "\" & nomFichier
If Dir(cheminFichier) <> "" Then
' Si le fichier existe déjà, ajouter "Copie" au nom de fichier
doublons = True
Dim numCopie As Integer
numCopie = 1
Do Until Dir(cheminFichier) = ""
nomFichier = "Copie" & numCopie & "_" & valeurRecherche & ".xlsm"
cheminFichier = cheminDossier & "\" & nomFichier
numCopie = numCopie + 1
Loop
End If
fichierDestination.SaveAs cheminFichier
' Fermer le fichier de destination sans enregistrer les modifications
fichierDestination.Close SaveChanges:=False
' Afficher un message si des doublons ont été détectés
If doublons Then
MsgBox "Des doublons ont été détectés lors de l'enregistrement des fichiers."
End If
End If
Next i
MsgBox "Le traitement est terminé."
End SubJ'ai mis à jour mon code
N'ayant pas eu de réponse, je me permets de relancer
Bonjour
Je dois récupérer l'information depuis un textbox (TextBox2 ==> fichier source / TextBox3 ==> fichier destination ) page suivi fichier suppression pour modifier l'emplacement de mes fichiers dans le code ( l'utilisateur le saisie manuellement sur la page suivi).
La source n'est pas dans la textbox2 mais bien dans la Textbox3. C'est l'inverse que vous mentionnez dans votre post
Du coup je ne comprends pas votre problème.
Par contre pourquoi utiliser des Textbox sur votre feuille pour faire cela. J'aurais supprimé les objets Texbox et mis ces infos dans des cellules. Plus simple à faire à mon avis
Crdlt