Problème de "range" avec VBA Excel

Résolu
Bonjour,

Dans une appli Excel, j'essaie depuis un bouton commande de recopier une feuille devis sur une feuille facture. Voilà ci-dessous le code que j'utilise pour cela, code attaché à la feuille "Devis" depuis un bouton de commande. La feuille "Facture", elle, fait partie du même classeur.

La première ligne "range" fonctione bien.
Les deux transferts suivants concernent des plages de cellules, bloc_adresse et blocdetail. Et ces deux-là ne fonctionnent pas. Je n'ai pourtant aucun message d'erreur.
Qui pourrait m'éclairer ? Merci d'avance !
Roland
-----------------------------------------------------------------------
Private Sub Devis_facturer_Click()
'
Worksheets("Facture").Range("Fac_reference") = "N.devis n° " & Range("Nofac") & " du : " & Range("Datefac") & " Règlement prévu : " & Range("dev_Regl")
'
Sheets("Facture").Range("Fac_bloc_adresse") = Range("dev_Bloc_adresse")
'
WorkSheets("Facture").Range("Fac_blocdetail") = Worksheets("Devis").Range("dev_blocdetail")
'
Sheets("Facture").Activate
End Sub

2 réponses

  1. Contributeur
    bonjour

    j'essaie depuis un bouton commande de recopier une feuille devis

    Ce n'est pas de la recopie car cela ne fait que valoriser une autre plage.

    Comme tu fonctionne avec des plages nommées (ce qui est très bien), difficile de te dire la raison du non fonctionnement.

    Si tu pouvais nous mettre un exemple de classeur, sans données identifiables et privées, mais avec la structure de tes données sur http://www.cijoint.fr/ puis nous mettre le lien généré ici ce serait plus facile.
    0
    1. Merci beaucoup de ta réponse ! C'est vraiment sympa. Mais entre temps j'ai essayé une autre écriture.

      Avant de faire mon transfert range("devis...") sur range("Facture..."), je passe par une variable intermédiaire. Et là, ça fonctionne parfaitement bien ! Ma feuille "facture" récupére bien les valeurs de la feuille "devis"

      Voilà, ci-dessous, le nouveau code qui fonctionne :

      Bloc_adresse = Worksheets("Devis").Range("dev_Bloc_adresse")
      Worksheets("Facture").Range("Fac_bloc_adresse") = Bloc_adresse
      Bloc_detail = Range("dev_blocdetail")Worksheets("Facture").Range("Fac_blocdetail") = Bloc_detail
      ColonneP = Range("Dev_colonneP")
      Worksheets("Facture").Range("Fac_colonneP") = ColonneP

      Il reste que je ne vois toujours pas pourquoi le code précédent ne fonctionnait pas.

      Amicalement
      Roland
      0
      1. bonjour
        peut etre passer par un copier/coller comme ci-dessous

        Range("dev_blocdetail").Select
        Selection.Copy
        Sheets("facture").Select
        ActiveSheet.Range("fac_blocdetail").Cells(1, 1).Select
        ' copie tout
        ActiveSheet.Paste
        ' copie valeurs uniquement
        ' Selection.PasteSpecial Paste:=xlPasteValues

        bonne suite
        0
      2. Contributeur
        Bonjour,
        excusez l'incruste

        Sheets("Facture").Range("Fac_bloc_adresse") = Range("dev_Bloc_adresse").value
        0
      3. ah, la simplicité !!!!
        cordialement
        0