Option Explicit
Sub Formeautomatique1_QuandClic()
Dim oc As Object 'déclare la variable oc (Onglet Cible)
Dim ad As Range 'déclare la variable ad (Anciennes Données)
Dim o As Object 'déclare la variable o (Onglet)
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
Dim dest As Range 'déclare la variable dest (cellule de DESTination)
Dim pl As Range 'déclare la variable pl (PLage)
Dim cel As Range 'déclare la variable cel (CELlule)
Sheets("Données").Select
Range("a4:aj60000").Select
Selection.ClearContents
Application.ScreenUpdating = False 'masque les changements à l'écran
Set oc = Sheets("Données") 'définit l'onglet cible
Set ad = oc.Range("a5").CurrentRegion 'définit la plage des anciennes données
If ad.Rows.Count > 1 Then 'condition si la plage ad compte plus d'une seule ligne
Set ad = ad.Offset(1, 0).Resize(ad.Rows.Count - 1, ad.Columns.Count) 'redéfinit la plage ad (sans la première ligne)
ad.ClearContents 'efface les anciennes données
End If 'fin de la condition
For Each o In Sheets 'boucle 1 : sur tous les onglets du classeur
If Not o.Name = "Nb Visites terrain client-T" Then
If Not o.Name = "Activité TBC " Then
If Not o.Name = "Synthèse activité 1" Then
If Not o.Name = "Synthèse activité 2" Then
If Not o.Name = "Nb Clients différents visités" Then
If Not o.Name = "Clients_différents" Then
If Not o.Name = "Données" Then 'condition : si le nom de l'onglet est différent de "Données"
dl = o.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée de la colonne A de l'onglet o
Set pl = o.Range("f5:f" & dl) 'définit la plage pl
For Each cel In pl 'boucle sur toutes les cellules de la plage pl
Set dest = oc.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0) 'définit la cellule de destination dest
'si la cellule n'est pas vide, copie les cellules visibles de la ligne dans dest
If cel.Value <> "" Then
cel.EntireRow.SpecialCells(xlCellTypeVisible).Copy dest
' *************************
' Rajout par rapport a votre macro
' copie + collage spéciale des valeur sur les 2 premieres colonnes uniquement
cel.Offset(, -5).Resize(1, 2).Copy
dest.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End If
' Fin du Rajout
' *************************
Next cel 'prochaine cellule de la plage pl
End If 'fin de la condition
End If
End If
End If
End If
End If
End If
Next o 'prochain onglet de la boucle 1
Application.ScreenUpdating = True 'affiche les changements à l écran
End Sub