Commande SpecialCells(xlCellTypeVisible).Paste
Bonjour,
Je suis débutante en VBA, j’arrive à mettre généralement en place les actions que je souhaite faire mais là je n’y parviens pas. Je me permets de vous solliciter.
J'ai un fichier Excel (2016) contenant 4 onglets.
Les 4 premières colonnes (A à D) des 4 onglets contiennent le même type d'information :
Date, Nom, Prénom et ID.
Dans le 1er onglet ("Informations"), à partir de la colonne 5, 3 colonnes contiennent d’autres informations (E à G),
Dans le 2ème onglet( "Adresses"), à partir de la colonne 5, 13 colonnes contiennent d’autres informations (E à Q)
Dans le 3ème onglet ("Loisirs"), à partir de la colonne 5, 14 colonnes contiennent d’autres informations (E à R)
Mon souhait serait de pouvoir copier dans le 5ème onglet (" Synthèse"), toutes les informations.
J’ai commencé à mettre quelques données mais je bloque sur la copie des données alors qu’il y a des colonnes masquées.
Sub ImportValeursFichier()
'
' Réalisation d'une macro permettant d'intégrer les données dans l’onglet Synthèse issues des autres onglets.
' Déclaration des variables
Dim MonFichier1 As String
'Dim MonFichier2 As String
Dim DateJ$, pFld$, f$
Dim DateMois 'date du fichier pour So Full
' Répertoire de travail
DateJ = InputBox("Date en cours ? format MM.AAAA") 'saisir la date du fichier
MonFichier1 = "S:\SERVICES\Données\Valeurs\Fichier extrait " & DateJ & ".xlsm"
'MonFichier2 = "S:\SERVICES\Données\Valeurs\Fichier extrait.xlsx"
' Message de validation pour copie des données
Dim ws As Object
Dim cellule As Range
Application.DisplayAlerts = False
' Ouverture fichiers de travail
' Travail sur onglet Informations
Workbooks.Open Filename:=MonFichier1, UpdateLinks:=0
Sheets("Informations ").Select
Range("A3:G3").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
'Workbooks.Open Filename:=MonFichier2, UpdateLinks:=0
Sheets("Synthèse").Select
Range("A3").Select
ActiveSheet.Paste
' Ok cela fonctionne pas de souci ! C’est ensuite que cela se complique
' Travail sur onglet Adresses
' Windows\Fichier extrait " & DateJ & ".xlsm ").Activate
Sheets("Adresses").Select
Range("A3:Q3").Select '
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
' Windows("Fichier extrait.xlsx ").Activate
' Dans l’onglet Synthèse, les colonnes sont reprises à la suite suivant les onglets.
' Il est donc impossible de coller les valeurs de l’onglet Adresses sans remplir les colonnes E à G qui
' sont pourtant masquées. Les données copiées de l’onglet Adresses devraient être copiées de H à T.
Sheets("Synthèse").Select
Columns("E:G").Select
Selection.EntireColumn.Hidden = True
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveCell.Offset(1, 0).Select
End Sub
' J’ai compris qu’il fallait utiliser la commande SpecialCells(xlCellTypeVisible).Paste mais je n’arrive pas à l’écrire.
Il y a très certainement une autre solution à laquelle je n'ai pas pensé :).
Ci-joint un fichier.
Merci d’avance.
Bonjour,
Cette commande est la suivante mais j'ai des doutes que cela fonctionne, il y a énormément de SELECT dans votre code ..
Range(Selection).SpecialCells(xlCellTypeVisible).SelectDe plus j'ai testé en copiant une plage A1/B1 Feuil1 masquant une colonne B et C Feuil2, en sélectionnant cellule affichée plage A1/D1 Feuil2 et copiant les valeurs mais malheureusement ceci me colle les valeurs sur A1/B1 et D1/E1, quelqu'un a une explication sur les cellules adjacentes B1/D1 ?
Merci et bonne journée.
Merci d’avoir pris le temps de regarder. Je vais essayer d’améliorer mon code.