Recopier des formules

Bonjour

Quand je recopie une une plage de cellule avec ce code

Private Sub CommandButton1_Click()

    Dim a
        a = Sheets("BaseDeDonnees").Range("A4:M34")
        Sheets("Janv").Range("A4:M34") = a
       'se deplacer vers janv
      Range("A4").Select

End Sub

les cellule sont biens recopiées mais les formules qu'est ce qui me man,que comme ligne

merci de m'aider

Bonsoir,

Bonsoir,

Rends-toi d'abord compte qu'avec cette méthode tu ne copies pas. C'est à dire, le presse-papier reste vide. Donc tu ne colles pas non plus.

Tu affectes les valeurs d'une plage à une variable de type Variant. Je dis bien valeurs (donc pas formules), car ne mettant rien après ta définition de Range, c'est la propriété par défaut de l'objet qui intervient, soit Value.

Soit tu copies et colles, et tu auras les formules et les format, et les formules s'adapteront le cas échéant à leur nouvelle position selon que les références sont relatives ou absolues...

Soit tu utilises la propriété Formula qui te transfèrera les formules (s'il y a lieu) et les valeurs). Les formules ne seront pas modifiées, même comportant des références relatives.

Cordialement.

Le fichier demande est joint et encore merci

10mdiabete3.xlsm (173.76 Ko)

Bonjour,

Pour illustration : avec même méthode de transfert des formules...

Mais elle ne fonctionne bien pour janvier que parce que les références dans les formules sont les mêmes.

Ce ne sera pas le cas pour les autres mois. J'ai donc mis la ligne permettant de copier-coller (désactivée, à activer en désactivant les 2 lignes de la méthode précédente).

Ceci étant, ta méthode implique que tu va mettre 12 boutons et répéter la procédure pour chaque mois "en dur"... !

Il serait peut-être plus profitable de mettre un bouton sur ta feuille de base, avec une seule procédure qui questionnerait sur le mois à recopier, détecterait son emplacement dans la base et ferait l'opération vers la feuille mensuelle concernée...

Cordialement.

Merci

Auriez vous la gentillesse de montrer comment faire pour mettre un seule bouton comme expliqué ci-dessus

merci

Bonjour,

Private Sub TftMois_Click()
    Dim mois, m%, dm%, fm%, a%
    mois = Split("Janv Fev Mars Avril Mai Juin Juil Aout Sept Oct Nov Dec")
    a = Year(Me.Range("A4"))
    Do
        m = Application.InputBox("Indiquer le numéro du mois à transférer sur la " _
         & "feuille mensuelle.", "Transférer Mois", , , , , , 1)
        If m >= 1 And m <= 12 Then Exit Do
        If m = False Then
            Exit Sub
        Else
            MsgBox "Mois non valide", vbInformation, "Saisie non valide"
        End If
    Loop
    dm = DateSerial(a, m, 1) - DateSerial(a - 1, 12, 31) + 3
    fm = DateSerial(a, m + 1, 1) - DateSerial(a - 1, 12, 31) + 2
    Me.Range(Cells(dm, 1), Cells(fm, 13)).Copy Worksheets(mois(m - 1)).Range("A4")
    Worksheets(mois(m - 1)).Activate 'Pour aller vérifier... sinon supprimer cette ligne
End Sub

NB- Le bouton est nommé TftMois. L'utilisateur renseigne le mois à transférer par son numéro dans la boîte de dialogue InputBox. La méthode filtre les saisies invalides ne correspondant pas à un nombre, on teste donc en plus si ce nombre est compris entre 1 et 12. Si ce n'est pas le cas, la question est relancée jusqu'à obtention d'un nombre valide ou clic sur Annuler (particularité : Annuler renvoie False, assimilé à 0, donc si frappe 0, cela correspond à Annuler, on ne peut l'inhiber car sinon l'utilisateur ne pourrait plus sortir en annulant...)

Les lignes de début et fin sont calculées à partir des dates.

Cordialement.

14micpid-mdiabete3.xlsm (178.03 Ko)
Rechercher des sujets similaires à "recopier formules"