Recherche copier coller VBA
Résolu/Fermé
A voir également:
- Recherche copier coller VBA
- Copier coller pdf - Guide
- Historique copier-coller android - Guide
- Symbole clavier copier coller - Guide
- Copier une vidéo youtube - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
2 réponses
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
22 juin 2016 à 14:32
22 juin 2016 à 14:32
Bonjour Murielle, bonjour le forum,
Si les données du fichier B se trouvent dans le premier onglet de celui-ci et commencent dans la cellule A1, le code ci-dessous devrait convenir. Tu dois le placer dans le fichier A. Le code demande à l'utilisateur d'ouvrir le fichier B via une boîte de dialogue puis agit. À la fin, le fichier B est fermé...
Si les données du fichier B se trouvent dans le premier onglet de celui-ci et commencent dans la cellule A1, le code ci-dessous devrait convenir. Tu dois le placer dans le fichier A. Le code demande à l'utilisateur d'ouvrir le fichier B via une boîte de dialogue puis agit. À la fin, le fichier B est fermé...
Sub Macro1() Dim CD As Workbook 'déclare la variable CD (Classeur Destination) Dim CS As Workbook 'déclare la variable CS (Classeur Source) Dim OS As Worksheet 'déclare la variable OS (Onglet Source) Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs) Dim NL As Long 'déclare la variable NL (Nombre de Lignes) Dim NC As Integer 'déclare la variable NC (Nombre de colonnes) Dim I As Integer 'déclare la variable I (Incrément) Dim J As Integer 'déclare la variable J (incrément) Dim K As Integer 'déclare la variable K (incrément) Dim L As Long 'déclare la variable L (incrément) Dim TL() As Variant 'déclare la variable TL (Tableau des Lignes) Set CD = ThisWorkbook 'définit la classeur destination CD With Application.FileDialog(msoFileDialogOpen) 'prend en compte la boîte de dialogue permettant l'ouverture d'un fichier .Show 'ouverture On Error GoTo fin 'en cas d'erreur, va à l'étiquette "fin" Workbooks.Open (.SelectedItems(1)) 'ouvre le premier fichier sélectionné et ferme la boîte de dialogue (génère une erreur si bouton [Annuler]) End With 'fin de la prise en compte de la boîte de dialogue permettant l'ouverture d'un fichier Set CS = ActiveWorkbook 'définit la classeur source CS Set OS = CS.Sheets(1) 'définit l'onglet source OS (ici le premier du classeur source, tu adapteras à ton cas) TV = OS.Range("A1").CurrentRegion 'définit le tableau de valeurs TV NL = UBound(TV, 1) 'définit le nombre de ligne NL du tableau de valeurs TV NC = UBound(TV, 2) 'définit le nombre de colonnes NC du tableau de valeurs TV For I = 1 To CD.Sheets.Count 'boucle 1 : sur tous les onglet du classeur destination L = 1: Erase TL 'reinitialise L, vide le tableau TL For J = 1 To NL 'boucle 2 : sur toutes les lignes J du tableau des valeurs TV If TV(J, 3) = CD.Sheets(I).Name Then 'condition : si la donnée ligne J colonne 3 (=> colonne C) de TV est égale au nom de l'onglet de la boucle 1 ReDim Preserve TL(1 To NC, 1 To L) 'redimensionne le tableau Tk (autant de lignes de TV a de colonnes, L colonnes) For K = 1 To NC 'boucle 3 : sur toutes les colonnes K du tableau des valeurs TV TL(K, L) = TV(J, K) 'récupère dans la ligne K de TL, la valeur en colonne K de TV (= transposition) Next K 'prochaine colonne de la boucle 3 L = L + 1 'incrémente L (ajoute une colonne au tableau des lignes TL) End If 'fin de la condition Next J 'prochaine ligne de la boucle 1 'si L est supérieure à 1 (au moins un occurrence a été trouvée), renvoie dans la cellule A1 redimensionnée de l'onglet de la boucle 1 le tableau TL tranposé If L > 1 Then CD.Sheets(I).Range("A1").Resize(UBound(TL, 2), UBound(TL, 1)).Value = Application.Transpose(TL) Next I 'prochain onglet de la boucle 1 CS.Close False 'ferme le classeur source sans l'enregistrer fin: 'étiquette End Sub