Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Copie entre 2 classeurs en fonction de valeurs choisies

  • Initiateur de la discussion Initiateur de la discussion ifi77
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

ifi77

XLDnaute Occasionnel
Bonjour @ tuous,

je bloque sur quelquechose d'apparemment simple mais il y a des jours...

en fait dans la pièce jointe il y a un formulaire qui permet de créer un nouveau classeur, puis je cherche à y copier les colonnes A B C ET D de la feuille "rensprivés" puis en fonction de 5 critères au choix en combobox 2 les renseignements correspondant.
Le tout filtrer en fonction d'une valeur défini en combobox 1.
Lorsque je lance la macro cette dernière se bloque sur le collage et la je ne vois pas pourquoi:

Workbooks(cla).Sheets("Listing").Cells(1, 1).Value = ThisWorkbook.Sheets("rensprivés").Cells(3, 1).Value


Je vous mets le fichier complet pour une meilleur comprehension.

merci @+
 

Pièces jointes

Re : Copie entre 2 classeurs en fonction de valeurs choisies

Bonjour
VB:
Workbooks(cla & ".xls").Sheets("Listing").Cells(1, 1).Value = ThisWorkbook.Sheets("rensprivés").Cells(3, 1).Value
aurait plus de chances de marcher.

Mais vous auriez eu moins de redites si vous aviez declaré cla As Workbook
et fait Set cla = ActiveWorkbook juste après l'ouverture.
cla.Sheets("Listing etc. aurait été suffisant. Il vaut mieux d'une façon générale enregistrer des objets dans des variables objets plutôt que d'enregistrer leurs noms dans des String en vue de n'utiliser ces String que pour retrouver ces objets.

Par ailleurs si vous mettez As String seulement à la fin d'un Dim, seule la dernière variable de la liste sera déclarée As String, à défaut de spécification explicite du type, les autre se retrouveront déclarées par défaut As Variant.
À+
 
Re : Copie entre 2 classeurs en fonction de valeurs choisies

merci dranreb, en effet cela copie mieux comme cela, et merci pour tes informations techniques, je pensais que le fait de mettre le type de déclaration valait pour toute la ligne.
Une petite question, voila j'arrive à le copier mais je cherche à le copier sur la 1ere ligne non vide du classeur de reception.

j'ai pour l'instant fait cela mais il ne me copie que la 1ere valeur aurais tu une idée?

Dim sht As String, chemin As String, cla As String
Dim col, i, n, b, m, nbcol As Integer, ligne As Long
chemin = CreateObject("WScript.Shell").SpecialFolders("Desktop")
Workbooks.Open (chemin & "\Liste " & TextBox1 & ".xls")

For i = 1 To 5
sht = Me.Controls("label" & 13 + i).Caption
col = Me.Controls("label" & 18 + i).Caption
Next i
nbcol = Sheets("listing").Cells(1, Columns.Count).End(xlToLeft).Column
cla = ("Liste " & TextBox1)

b = Me.ComboBox1.Value
Workbooks("formulaire edition listing.xls").Activate
For n = 1 To Range("A65536").End(xlUp).Row
If Workbooks("formulaire edition listing.xls").Sheets("situfam").Cells(n, 4) = b Then
With Workbooks(cla & ".xls").Sheets("Listing")
ligne = .Range("A" & .Rows.Count).End(xlUp).Row + 1
End With
Workbooks(cla & ".xls").Sheets("Listing").Cells(ligne, 1).Value = Workbooks("formulaire edition listing.xls").Sheets("rensprivés").Cells(n, 1).Value


End If

Next n

Merci @+
 
Re : Copie entre 2 classeurs en fonction de valeurs choisies

Tu veux copier quoi ? Où ?
tu pourrait faire du code plus clair en utilisant des variables Workbook, Worksheet, Range.
ThisWorkbook.Sheets("NomFeuilleExcel") pout toujours être remplacé par CodeNameVBA
À+
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
9
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…