besoind'aide

JP43

XLDnaute Nouveau
Bonjour et merci pour votre aide pour résoudre mon problème .

je voudrai qu'excel transfère la valeur C5 ET D5 (ainsi que les suivantes) dans le tableau de la feuille "surface" et renvoie le résultat dans la cellule E5 de cette feuille (comme sur la première ligne) .Evidemment il serait plus facile de recopier la formule(=C5*D5)dans la cellule E5 mais il s'agit d'un exemple pour un fichier beaucoup plus complexe ou j'aurai besoin d'une fonction similaire.
 

Pièces jointes

  • ESSAI 2.xlsx
    10.7 KB · Affichages: 77

Hieu

XLDnaute Impliqué
Salut,

De ce que tu veux, c'est récupérer les données d'entrées de la feuille total, les envoyer dans ta feuille de calcul surface, et de ramener le résultat dans la colonne qui va bien.
VB:
Sub mlk()
For i = 1 To 15
    Sheets("surface").Range("b5") = Sheets("total").Range("c3").Offset(i, 0)
    Sheets("surface").Range("c5") = Sheets("total").Range("d3").Offset(i, 0)
    Sheets("total").Range("e3").Offset(i, 0) = Sheets("surface").Range("d5")
Next i
End Sub
 

Pièces jointes

  • ESSAI 2_v0.xlsm
    20.2 KB · Affichages: 48

JP43

XLDnaute Nouveau
Merci pour ta réponse elle correspond parfaitement à ce que je recherche.
Pourrai tu encore me donner un coup de main (ou de clavier plutôt).
Sur mon fichier joint je souhaiterais rajouter un paramètre pour remplir mon tableau,je souhaiterais qu'excel, on fonction du choix sur la colonne A de la feuille total applique la formule de la feuille choisie. J’espère avoir été suffisamment claire.
 

Pièces jointes

  • ESSAI 2_v0 (1).xlsm
    24.6 KB · Affichages: 57

Hieu

XLDnaute Impliqué
Salut,

Ajout d'un parametre "feuille" :
VB:
Sub mlk()
For i = 1 To 15
    feuille = Sheets("total").Range("a3").Offset(i, 0)
    Sheets(feuille).Range("b5") = Sheets("total").Range("c3").Offset(i, 0)
    Sheets(feuille).Range("c5") = Sheets("total").Range("d3").Offset(i, 0)
    Sheets("total").Range("e3").Offset(i, 0) = Sheets(feuille).Range("d5")
Next i
End Sub

N'oublie pas d'ajouter au titre de ton post un [RESOLU]
 

Pièces jointes

  • ESSAI 2_v1.xlsm
    27.9 KB · Affichages: 67

JP43

XLDnaute Nouveau
Encore un peu besoin d'aide lorsque je transpose la dernière formule à mon fichier cela ne marche pas (la première formule fonctionne parfaitement bien lorsqu'il n'y a qu'un onglet).
Voici mon code vba:
Sub mlk()
For i = 0 To 15
feuille = Sheets("calcul").Range("i5").Offset(i, 0)
Sheets("feuille").Range("c5") = Sheets("calcul").Range("b5").Offset(i, 0)
Sheets("feuille").Range("b3") = Sheets("calcul").Range("f5").Offset(i, 0)
Sheets("feuille").Range("c3") = Sheets("calcul").Range("g5").Offset(i, 0)
Sheets("feuille").Range("d3") = Sheets("calcul").Range("h5").Offset(i, 0)
Sheets("calcul").Range("j5").Offset(i, 0) = Sheets("feuille").Range("L21")
Next i
End Sub

Le message d'érreur est :
erreur d'éxécution 9
L'indice n'appartient pas a la selection
La ligne"Sheets("feuille").Range("c5") = Sheets("calcul").Range("b5").Offset(i, 0)"
est surlignée en jaune
Merci d'avance pour ton aide.
 

Hieu

XLDnaute Impliqué
Ok,

En regardant de plus pret - et en regardant via le fichier post #4 - j'avais créé une variable feuille. Dans ton code, tu cherches une feuille dont le nom est "feuille", ce qui peut poser probleme !
Le code, devrait plutot ressembler à ça :
VB:
Sub mlk()
For i = 0 To 15
feuille = Sheets("calcul").Range("i5").Offset(i, 0)
Sheets(feuille).Range("c5") = Sheets("calcul").Range("b5").Offset(i, 0)
Sheets(feuille).Range("b3") = Sheets("calcul").Range("f5").Offset(i, 0)
Sheets(feuille).Range("c3") = Sheets("calcul").Range("g5").Offset(i, 0)
Sheets(feuille).Range("d3") = Sheets("calcul").Range("h5").Offset(i, 0)
Sheets("calcul").Range("j5").Offset(i, 0) = Sheets(feuille).Range("L21")
Next i
End Sub

Dans le code que tu presentes, la ligne feuille = ... ne sert à rien.
La fonction sheets() veut une variable de type texte (string). Donc, il faut lui rentrer une variable de ce type ou "taper" un mot entre guillemet, ce que tu as fait malencontreusement.

Dis moi, si ca te va ?!
 

Hieu

XLDnaute Impliqué
Dans ton code:
VB:
sheets("feuille"). ...
Dans le mien :
VB:
sheets(feuille). ...

Dans ton code, tu cherches un onglet dont le nom est "feuille".
Dans le mien, je cherche un onglet dont le nom est égale à la variable feuille. Pour i = 1, ma variable vaut la cellule i5.

N'oublie pas d'ajouter au titre de ton post un [RESOLU]
 

Hieu

XLDnaute Impliqué
Slt,

En partant à "l'aveuglette" ( à tester):
VB:
Sub mlk()
For i = 0 To 15
feuille = Sheets("calcul").Range("i5").Offset(i, 0)
if feuille <> "" then
Sheets(feuille).Range("c5") = Sheets("calcul").Range("b5").Offset(i, 0)
Sheets(feuille).Range("b3") = Sheets("calcul").Range("f5").Offset(i, 0)
Sheets(feuille).Range("c3") = Sheets("calcul").Range("g5").Offset(i, 0)
Sheets(feuille).Range("d3") = Sheets("calcul").Range("h5").Offset(i, 0)
Sheets("calcul").Range("j5").Offset(i, 0) = Sheets(feuille).Range("L21")
end if
Next i
End Sub

L'exemple en post #3 ne correspond plus à ce que tu souhaites. il faudrait partir de cet exemple modifié, pour qu'on puisse parler de la même chose.
 

JP43

XLDnaute Nouveau
Ca marche encore nickel
J'aurai encore besoin d'un conseil.
Je souhaiterais imprimer mon fichier excel au format pdf, l’enregistrer dans un répertoire correspondant à une cellule de la feuille, ensuite ouvrir outlook mettre ce fichier en fichier joint, mettre l'adresse du destinataire qui correspond a une cellule de la feuille dans le destinataire.Tout ceci grâce a un bouton sous lequel se cachera le code vba.
Ca fait peut être un peu beaucoup .
merci de ton aide
 

Hieu

XLDnaute Impliqué
Salut,

Pour la création d'un pdf, il suffit de faire un enregistrement de macro, et modifier la zone filename pour convenir du chemin et nom de fichier souhaitée.

Pour l'envoi d'un email, avec un peu de recherche : http://www.info-3000.com/vbvba/envoiemailoutlook.php

Ce qui donne :
VB:
Sub routine()
chemin = Range("k2")
If Not Right(chemin, 1) = "\" Then chemin = chemin & "\"
fichier = chemin & Range("k3")

call enregistrer_pdf (fichier)
call UseOutlook (fichier)
End Sub
avec la macro pour enregistrer en pdf :
VB:
Sub enregistrer_pdf(fichier)
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=fichier, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
End Sub
et la macro pour envoyer un email :
VB:
Sub UseOutlook(fichier)
  Dim MonOutlook As Object
  Dim MonMessage As Object
  Set MonOutlook = CreateObject("Outlook.Application")
  Set MonMessage = MonOutlook.createitem(0)
  MonMessage.to = Range("k4").Value
  ' MonMessage.cc =
  ' MonMessage.bcc =
  MonMessage.Subject = "perso"
  MonMessage.Attachments.Add fichier
  MonMessage.body = "Je vous envoie un message idiot."
  MonMessage.send
  Set MonOutlook = Nothing
End Sub
 

Pièces jointes

  • ESSAI 2_v2.xlsm
    27.4 KB · Affichages: 83

JP43

XLDnaute Nouveau
Bonjour a tous,
J'aurai encore besoin d'aide,je souhaiterais amélioré mon fichier avec des macro. je voudrai si a4=1(ou les suivantes) faire une recherche vertical sur la feuille "negoce" "C5-G12" en fonction des valeurs b4 et c4 et afficher le résultât dans la cellule h4 (et pour les suivantes aussi).si A4 est vide on utilise la macro comme avant qui ne marche plus actuellement car j'ai rajouté des colonnes et je n'arrive plus a la faire fonctionner malgré mes modifications.
 

Pièces jointes

  • ESSAI 3_v2 (1).xlsm
    30.5 KB · Affichages: 40

Discussions similaires

Réponses
1
Affichages
107
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 192
Messages
2 086 056
Membres
103 110
dernier inscrit
Privé