Problème de "range" avec VBA Excel
Résolu
lecrol
Messages postés
200
Date d'inscription
Statut
Membre
Dernière intervention
-
ccm81 Messages postés 10909 Date d'inscription Statut Membre Dernière intervention -
ccm81 Messages postés 10909 Date d'inscription Statut Membre Dernière intervention -
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
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
A voir également:
- Problème de "range" avec VBA Excel
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Ranger par ordre alphabétique excel - Guide
2 réponses
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.
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.
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
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
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
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