Re : Bouton qui copie de données vers une autre feuille (plus fantaisies malsaines)
Ouais la sa fonctionne, mais y a quelque chose qui est défectueux, même sur ta version que tu m'as envoyé... Les chiffres sont décalés... La première fois que jai cliqué ca été correct sur le tien (pas sur le mien) pis la deuxième fois c'est devenu pas correct (comme le mien) crois tu que tu aurais pu te tromper dans le chiffre des colonnes?
j'tenvoi la formule:
Sub export()
Dim derc, periode, rep, titre, derl, cel, I
Application.ScreenUpdating = False
If [an] = "" Or [ms] = "" Then MsgBox "veuillez indiquer l'année ou le mois": Exit Sub
periode = [ms] & " " & [an]
'définir le mois
Sheets("Statistique mensuelle").Activate
derl = [A65000].End(xlUp).Row
derc = [IV3].End(xlToLeft).Column
'la dernière cellule remplie de la ligne 3
On Error Resume Next
Cells.Find(What:=periode, SearchOrder:=xlByRows).Activate
'on cherche si le mois et l'année sont déjà présents
If Err = "0" Then
's'ils sont présent, on demande confirmation
rep = MsgBox("Le mois a déjà été sauvegardé, le modifier?", vbYesNo)
Select Case rep
Case vbYes: derc = ActiveCell.Column - 1: GoTo suite
'au cas ou on veuille modifier, on sélectionne la colonne qui va bien
Case vbNo: Sheets("Stat").Select: Exit Sub
' on veut pas modifier, on se casse
End Select
End If
For Each titre In Array("3", "4", "13", "22")
Cells(titre, derc).Copy Destination:=Cells(titre, derc + 1)
Next titre
' Ici, on a recopié les titres avec leur mise en forme
Rows("3:3").NumberFormat = "@"
'on détermine que la ligne 14 est au format texte
Cells(3, derc + 1) = periode
'on rentre le mois et l'année dans la dernière cellule de la ligne 14 (nouveau mois)
suite:
For Each cel In Sheets("Statistique").Range("A6:A" & [A65000].End(xlUp).Row) 'ici, on recherche
If cel.Value = "" Then GoTo mefc
Columns("A:A").Select 'la personne dans la deuxième feuille
Selection.Find(What:=cel, SearchOrder:=xlByRows).Activate
ActiveCell.Offset(0, derc) = cel.Offset(0, 14) 'on commence à remplir
For I = 15 To 16
Selection.FindNext(After:=ActiveCell).Activate
ActiveCell.Offset(0, derc) = cel.Offset(0, I)
Next I... etc...