Communauté Fb
Follow us on twitter
Les vidéos du site
Le site complément

Programmer en vb

Bonjour et bienvenue,

Programmer en VB est le site qui vous fera prendre conscience que vous pouvez concevoir votre programme informatique vous-même, que vous soyez artisan, employé ou étudiant.

Le Visual Basic est un langage informatique très puissant, très flexible et très abordable.
Une version en application se trouve sous Office
Excel pour exemple :
Tapez Alt + F11 à l’aide de votre clavier puis vous voilà dans l’éditeur de code VBA.

Notre forum d’entraide vous offre des tutoriels ainsi que divers exemples tout prêt à adapter à votre projet personnel.
Nous vous demandons uniquement de la bonne humeur et de la bonne volonté pour toutes questions ou toutes aides quelle qu’elle soit.
Sachez que pour progresser rapidement il est conseillé d’aider au mieux les autres membres.
Nous ne sommes pas là pour juger les qualités ou défauts de codes proposés, mais pour trouver ensemble la solution à votre demande.

A vos claviers :

Afin de remplir le forum, nous vous demandons de partager sur les réseaux sociaux et autres.
https://www.facebook.com/AdminPVB/


Merci de nous rejoindre sur http://programmer-en-vb.forumactif.org/
Merci d'avoir pris le temps de lire.
Merci pour votre inscription.

L'équipe de Programmer-en-VB

Forum de programmation VBA et VB.NET

Welcome if you do not speak french,you are able to translate the whole topics with the flags just below this message. Click to English

Visual Basic Application et VB.net de puissants langages à la portée de tous.

Participez et soyez acteurs des divers forums ci-dessous.

Bienvenue à chaque nouveaux membres et merci à tous ceux qui font vivre ce forum.


Qui est en ligne ?

Il y a en tout 6 utilisateurs en ligne :: 0 Enregistré, 0 Invisible et 6 Invités

Aucun


Le record du nombre d'utilisateurs en ligne est de 65 le Mar 8 Juil - 23:40

Statistiques

Nos membres ont posté un total de 6098 messages dans 688 sujets

Nous avons 559 membres enregistrés

L'utilisateur enregistré le plus récent est ROELERI

Recherche dans les forums

Utiliser cette méthode afin de trouver rapidement les discussions disponible sur notre forum.


Derniers sujets

» Faute de code .....Que décodez vous dans ce film ?
par Berly Mer 20 Juin - 21:48

» Localiser tous les #N/A dans la plage ZONNE
par AdminPVB Sam 16 Juin - 22:37

» Configuration Editeur
par Berly Mer 13 Juin - 22:25

» Des idées .......vous en avez ?
par Berly Mar 12 Juin - 17:19

» Bienvenue à lina.bouda13
par AdminPVB Dim 10 Juin - 22:28

» Manquant:windows common controls 6 (SP6)
par TitiPointCom Sam 9 Juin - 8:47

» Déplacer ligne sélectionnée par Combobox, d'un tableau à un autre
par TitiPointCom Ven 8 Juin - 23:33

» Problème d'affichage de labels
par TitiPointCom Mar 5 Juin - 10:07

» Bienvenue à Alis
par AdminPVB Lun 4 Juin - 20:34

» Instants musique
par AdminPVB Dim 3 Juin - 21:46

» Les Boucles
par Berly Dim 3 Juin - 14:57

» bienvenue a Dengpao
par AdminPVB Jeu 31 Mai - 21:40

» bienvenue a BasMar01 et coucou86
par AdminPVB Lun 28 Mai - 6:31

» Bienvenue à Pralin
par Berly Ven 25 Mai - 21:27

» HUMOUR ET DERISION PAR IMAGES
par AdminPVB Lun 21 Mai - 8:37

Utiliser le bouton résolu

Dans votre message d'origine
cliquer sur le bouton



Ensuite tout en bas sur
Modifier le titre du sujet
cliquer sur le bouton

Résolu !!!

Ensuite changer l’icône du sujet par le bouton

Voilà pas plus compliqué que cela.


Merci pour votre présence ou passage sur le site de programmer-en-vb

Partenaires


créer un forum



Annuaire referencement


Flux RSS


MSN 

Juin 2018

LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 

Calendrier Calendrier

Petit souci d'affichage de valeurs(Tableau) valeurs saisies au clavier

Sam 14 Avr - 21:19 par Berly

Bonsoir a tous  Very Happy.

Voila j'ai un petit souci de méthode .

Je poste le code ,Ne vous souciez pas des zones de commentaire.

A la fin le nombre d éléments du tableau correspond bien au nombres de valeurs saisies par l'utilisateur .

Je ne trouve pas la méthode pour afficher les valeurs .....bon c'est vrai que en ce moment je bricole  Rolling Eyes.

Merci pour vos réponses  Wink.

Code:
[Imports …


[ Lecture complète ]
Traduction D'algorithmes

Mer 7 Mar - 22:28 par Berly

Bonsoir A toutes et Tous .

J'ouvre ce Post en vue d'une éventuelle collaboration de membres désireux de collaborer a l'évolution de tous.

Le but de ce forum ,consisterai a rechercher des Algorithmes en "Pseudo-code", sans restriction de ressources en appliquant le principe du copié collé .(Sans omettre de citer les sources de provenance  Very Happy,Livres ,exercices scolaires Very Happy ,etc.....)

La …

[ Lecture complète ]
SOS traduction

Dim 4 Mar - 9:11 par e.sainturlo

Bonjour à tous,

Je souhaite comprendre ce qui se cache derrière cette longue suite d'instructions imbriquées les unes dans les autres:

numero2 = Conversions.ToInteger(Operators.AddObject(numero2,Operators.ModObject(Operators.MultiplyObject(NewLateBinding.LateIndexGet(MPMP, new object[] {numero1,numero3}, null), Strings.Asc(MCMC.Substring(numero3, 1)) - 65), 26)));

Quelqu'un saurait-il …

[ Lecture complète ]
Et si on parlait des fichiers.txt et fichiers.csv

Ven 2 Fév - 20:51 par Berly

Bonsoir le forum  Very Happy

Je viens vers vous pour étudier en vbnet les fichiers.

Actuellement j'étudie dans une autre langage ces fichiers.



https://fr.wikipedia.org/wiki/Comma-separated_values.


Ces bases de données sont intéressantes a exploiter ,pour diverses applications dans la vie de tous les jours.


1° Création de fichiers avec extension ou pas.Y a t'il une bibliothèque native en …

[ Lecture complète ]
VB 2005 express

Mar 6 Fév - 17:02 par christian80.1951

Bonjours a tous,
J'utilise vb 2005 express.
dans la form1.vb[design] je créer une listebox .
Lorsque je veux la positionner dans cette form , lors de son déplacement avec la souris ma listbox devient invisible,
ce qui rend son positionnement mal-aisé.
Ce phénomène se produit aléatoirement ! ( certainement une mauvaise manip ) et cet état persiste dans le projet.
J'espère être compréhensible.


[ Lecture complète ]
Création d'un raccourci sur le Bureau pour son Application

Mar 10 Oct - 18:49 par IFFIC

Bonsoir à tous, ou Bonjour s'il est plus tôt qu'à cette heure,
Je ne suis pas passé bien souvent par ici, car j'étais pris sur un gros projet depuis voici un peu plus d'un an.

Au bénéfice de bidouilles trouvées dans mes travaux, je vous livre celle-ci:
Car il est bien confortable de n'avoir pas à fouiller dans l'arborescence d'un disque externe ou une clé USB, voire en ayant changé de …

[ Lecture complète ]
Petits bidouillages pour ce faciliter La vie ,Astuces et codes pratique

Dim 11 Juin - 12:20 par Berly

Bonjour le Forum  Very Happy.

Lorsque j'écrivais dans mon code Console.Writeline ("Patati,Patata,......) ,j'ai d'abord utilisé le copié collé en changeant la valeur du texte .

Bon d'accord ,c'est bien mais ,ça me saoul un peu ,au fur et a mesure de mes apprentissages ,j'ai découvert les fonctions  Very Happy.

Maintenant je partage celle ci avec vous .

On est la sur un exemple de code en "Mode …

[ Lecture complète ]
Menustrip Vbnet Visual Studio

Sam 16 Sep - 21:05 par Berly

Bonsoir le Forum  Very Happy

Je suis actuellement en construction  d'un logiciel pour les enfants en scolarité primaire.(Visual Studio Community 2017)

Je l'ai commencé et il fonctionne parfaitement a ce stade.

J'utilise Le contrôle MenuSrip.

Au commencement il est question d'afficher par catégorie tables de 1 a 10 .
Un Premier Bouton "Tables de Multiplications" Aucun événement 
Puis Ajouts …

[ Lecture complète ]
suppression d'un fichier txt en cours d'utilisation

Mar 5 Sep - 9:51 par La boc

Bonjour,

dans mon application j'ai un fichier txt qui est chargé dans un DataGridView en fonction du n° ID.

Quand je supprime un ID, je dois aussi supprimer ce fichier, quand je fait un delete ça marche bien, le fichier est bien supprimé du dossier mais quand je ferme l'application j'ai un message box:

"Violation de l’accès concurrentiel:
Delete command a effectué 0 des enregistrements …

[ Lecture complète ]

Activer un classeur déjà ouvert

Partagez
avatar
danpom302
Step_Three_VBA
Step_Three_VBA

Localisation : Québec
Messages : 428
Date d'inscription : 23/09/2013
Age : 67

Résolu Activer un classeur déjà ouvert

Message par danpom302 le Dim 29 Avr - 18:28

Bonjour à tous,

J'ai deux classeurs d'ouverts soit le nouveau que je viens de créer et qui se nomme (tpkd_wolseley_18-0036_20180429.csv) désigné ici par le No 1 ainsi que celui-ci (tpkd_wolseleyV4.xlsm désigné ici par le No 2.

J'essai dans un premier temps, d'activer et d'amener à l'écran le No 2 afin d'y copier des données pour ensuite activer le No 1 pour les coller en A1.

J'ai essayé et travaillé plusieurs codes mais sans succès. Je sais qu'il est possible de récupérer le nom du fichier No 1 qui lui est changeant d'une facture à une autre.

Auriez-vous s.v.p., un code à me suggérer?

Merci encore une fois pour votre aide,

Dan
avatar
IFFIC
Step_Three_VBA
Step_Three_VBA

Localisation : Sud Breizh ar mor
Messages : 373
Date d'inscription : 25/05/2013
Age : 67

Résolu Re: Activer un classeur déjà ouvert

Message par IFFIC le Dim 29 Avr - 19:09

Hello Dan Very Happy , comme je pourrais le dire à ceux passant par ici,
Il se peut que je puisse t'aider dans ce domaine.

Mais il y a de ces noms de Classeurs qui filent des boutons  comme "tpkd_wolseley", Embarassed Embarassed Embarassed qui font fuir!
Je ne suis pas trop mal anglophone, mais là je nage en eaux profondes.

Tu les nommes par "UN" ou "DEUX" même par "PAPA" ou "MAMAN", et cela sera plus facile à comprendre.

Regarde la différence qu'il y a à dire: "ThisWorkbook" et "ActiveWorkbook" …. Cela va peut-être t'aiguiller

Après, on peut naviguer de l'un à l'autre facilement pour copie ou autres écritures.

Ceci dit, comme il est évident, et en toute amitié,
Yves
avatar
Berly
Step_Three_VBA
Step_Three_VBA

Localisation : Rodez(Aveyron)
Messages : 485
Date d'inscription : 23/04/2017
Age : 53

Résolu Re: Activer un classeur déjà ouvert

Message par Berly le Dim 29 Avr - 19:20


Yves je n'ai pas pu résister  Laughing.
avatar
Berly
Step_Three_VBA
Step_Three_VBA

Localisation : Rodez(Aveyron)
Messages : 485
Date d'inscription : 23/04/2017
Age : 53

Résolu Re: Activer un classeur déjà ouvert

Message par Berly le Dim 29 Avr - 19:34

Trêve de plaisanterie  Dan  Wink.


Bill a tous prévu Yves  Laughing.

Bon d'accord ......Si ça peut aider  Wink.

https://youtu.be/-6LtgYxUAQQ
avatar
IFFIC
Step_Three_VBA
Step_Three_VBA

Localisation : Sud Breizh ar mor
Messages : 373
Date d'inscription : 25/05/2013
Age : 67

Résolu Re: Activer un classeur déjà ouvert

Message par IFFIC le Dim 29 Avr - 19:53

Il n'en restera que ce que je puisse en dire:


avatar
Berly
Step_Three_VBA
Step_Three_VBA

Localisation : Rodez(Aveyron)
Messages : 485
Date d'inscription : 23/04/2017
Age : 53

Résolu Re: Activer un classeur déjà ouvert

Message par Berly le Dim 29 Avr - 20:03

Laughing Laughing Laughing Laughing Laughing.

C'est la plus grande bibliothèque "Universalis".
avatar
danpom302
Step_Three_VBA
Step_Three_VBA

Localisation : Québec
Messages : 428
Date d'inscription : 23/09/2013
Age : 67

Résolu Re: Activer un classeur déjà ouvert

Message par danpom302 le Dim 29 Avr - 22:46

Bonjour à tous,

Pour que ce soit plus simple à comprendre, voici à nouveau ma demande formulée différemment.

J'ai un fichier ouvert qui se nomme Moi qui sert à produire des factures qui seront envoyée une par une par courriel le tout à l'aide de macros. Le fichier Toi vient tout juste d'être produit.

Je cherche une macro qui va récupérer le nom de ce fichier pour ensuite naviguer entre ces deux fichiers soit Moi vers Toi ou Toi vers Moi.

Je sais qu'il est possible de récupérer le nom du fichier Toi que je viens tout juste de créer afin de l'utiliser. 

J'ai visionné la vidéo et ceci ne répond pas vraiment à ma demande. Il ne faut pas que mon client voit simultanément deux fichiers à l'écran parce qu'il va disjoncté. Il n'est pas mais pas du tout pro en informatique et il n'a pas le temps d'apprendre et surtout pas, de s'amuser comme nous le faisons présentement. Pour nous c'est plus une passion.


Alors s.v.p., auriez-vous, un code à me suggérer?

Merci encore une fois pour votre aide,

Dan
avatar
AdminPVB
Admin
Admin

Localisation : France Nord 59
Messages : 2046
Date d'inscription : 24/05/2013
Age : 42

Résolu Re: Activer un classeur déjà ouvert

Message par AdminPVB le Dim 29 Avr - 23:06

Bonsoir Daniel,Yves,Thierry.

@Danpom302, je vais te construire un exemple demain.
@ Iffic et Berly .
l'imagerie d'internet n'a pas de limite, pourquoi ne pas ouvrir un fil d'image délirante
comme vos échanges musicaux,cela serait un régal



_________________
Avatar


Bienvenue sur

Dans votre message d'origine cliquer sur le bouton

Tout en bas sur Modifier le titre du sujet cliquer sur le bouton : Résolu !!!
Changer l’icône du sujet par le bouton

Tout simplement.


Merci pour votre présence ou passage sur le site de programmer-en-vb

Celui qui croit tout connaitre, ne connait sans doute pas grand chose,chacun apporte son savoir, mais on a tous tout à apprendre ....  

study

avatar
danpom302
Step_Three_VBA
Step_Three_VBA

Localisation : Québec
Messages : 428
Date d'inscription : 23/09/2013
Age : 67

Résolu Re: Activer un classeur déjà ouvert

Message par danpom302 le Dim 29 Avr - 23:47

Bonjour adminPVB,

Merci pour ton aide et à demain.

Bonne fin de soirée,

Dan
avatar
AdminPVB
Admin
Admin

Localisation : France Nord 59
Messages : 2046
Date d'inscription : 24/05/2013
Age : 42

Résolu Re: Activer un classeur déjà ouvert

Message par AdminPVB le Lun 30 Avr - 8:47

Bonjour la France, le Canada &  other Countries

comme promis voici un exemple avec les commentaires pour comprendre le code.
ce code est à adapter en fonction des noms des classeurs ainsi que leurs chemins si ils sont différent de celui du dossier actif.
A bientôt et bonne utilisation. cheers
Fichiers joints
ExempleClasseurParentEnfant.zip
Vous n'avez pas la permission de télécharger les fichiers joints.
(26 Ko) Téléchargé 3 fois


_________________
Avatar


Bienvenue sur

Dans votre message d'origine cliquer sur le bouton

Tout en bas sur Modifier le titre du sujet cliquer sur le bouton : Résolu !!!
Changer l’icône du sujet par le bouton

Tout simplement.


Merci pour votre présence ou passage sur le site de programmer-en-vb

Celui qui croit tout connaitre, ne connait sans doute pas grand chose,chacun apporte son savoir, mais on a tous tout à apprendre ....  

study

avatar
danpom302
Step_Three_VBA
Step_Three_VBA

Localisation : Québec
Messages : 428
Date d'inscription : 23/09/2013
Age : 67

Résolu Re: Activer un classeur déjà ouvert

Message par danpom302 le Lun 30 Avr - 16:24

Bonjour adminPVB,

Merci pour ton code. Ce que je comprends dans ton code c'est que les noms des deux fichiers Excel sont connus alors que dans mon code seule une est connue; l'autre change d'une fois à l'autre et les numéros et les dates de chaque facture est différent. J'ai retravaillé mon code et là il ne me reste qu'à envoyer la facture qui est en format .csv tel que requis par le sous traitant.

Je t'joins tout mon code pour que tu puisses suivre le cours des événements. Peut-être vas-tu trouver pourquoi que le document csv ne se joint pas au courriel.

Note que tout fonctionne très bien jusqu'à l'envoie du 2e courriel avec le fichier .csv.

Encore une fois, merci pour ton aide,

Dan

Code:
Sub Courriel_Excel_3()
'
' Déprotéger, filtrer et imprimer la facture
        Sheets("Wolseley Facture").Select
        ActiveSheet.Unprotect "lune666"
       
' Ne pas raffraichir l'écran
        Application.ScreenUpdating = False
       
' Activé le filtre
        Range("$AR$20:$AR$1056").AutoFilter Field:=1, Criteria1:="<>"
       
' Imrimer le document
        'ActiveWindow.SelectedSheets.PrintOut Copies:=1
Code:
    Dim MonFichier As String
    Dim MonAdresse As String
    Dim mon_pdf As String
        mon_pdf = [G2] & [H2] & [G3] & [H3] & [G4] & [H4] & Format([G5], "YYYYMMDD")
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ActiveWorkbook.Path & "\" & mon_pdf & " .pdf", Quality:=xlQualityStandard
        MonFichier = ActiveWorkbook.Path & "\" & mon_pdf & " .pdf"
        MonAdresse = Range("F5").Text
Code:
    Call FichierPDF_3(MonAdresse, MonFichier)
   
End Sub
Code:
Sub FichierPDF_3(AdresseMail, MonFichier)
Code:
    Dim OutApp As Object
    Dim OutMail As Object
    Dim dernière_ligne_vide As Long
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    On Error Resume Next
    Dim control_app
    Set control_app = GetObject(, "Outlook.Application")
       
    If Err.Number = 0 Then
     With OutMail
        .To = Range("D16").Value
        .CC = Range("D17").Value
        .Subject = "tpkd_wolseley_" & [L4] & "_" & Format([G5], "YYYYMMDD")
        .HTMLBody = "<p>Bonjour,</p>" & "<p>Ci-joint, une facture concernant une ou plusieurs livraisons effectuées à la demande de Wolseley Canada inc. " & "<br>" & "<p>S.v.p., prendre note que seule la facture au format PDF sera considérée comme étant l'originale.<p>Good Day," & "<br>" & "<p>Please find attached an invoice in regard to one or a group of deliveries on behalf of Wolseley Canada Inc. " & "<br>" & "<p>Please note, the only invoice that will be considered as an original, is the PDF format." & "<br>" & "<p>Cordialement, Best Regards," & "<br>" & "<p>" & "Patrick Duval"
        .Attachments.Add MonFichier
        .Send
   
    End With
    Set OutMail = Nothing
    Set OutApp = Nothing
    End If
       
' Ne pas raffraichir l'écran
        Application.ScreenUpdating = False
       
' Copier les données C20:AN1056 du formulaire Wolseley Factures
    Range("C20:AN1056").Select
    Range("C20").Activate
    Selection.Copy
   
    Workbooks.Open Filename:= _
        "C:\Users\Daniel Pomerleau\Documents\PKD 2018\Factures\2018\y_tpkd_wolseley.csv"
    Windows("y_tpkd_wolseley_.csv").Activate
    Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("A1").Select
   
' Formater la feuille
    Columns("B:B").Select
    Range("B:B,AJ:AJ").Select
    Range("AJ1").Activate
    Selection.NumberFormat = "mm/dd/yyyy"
    Rows("1:1").Select
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlBottom
        .WrapText = True
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlCenter
        .WrapText = True
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = True
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Columns("A:AL").Select
    Selection.ColumnWidth = 25
    Range("A1").Select
    ActiveWorkbook.Save
Code:
' Envoyer ce fichier par courriel
    Dim MonFichier3 As String
    Dim mon_csv As String
           
    mon_csv = "tpkd" & "_" & "wolseley" & "_" & [AI2] & "_" & Format([AJ2], "YYYYMMDD")
    ChDir "C:\Users\Daniel Pomerleau\Documents\PKD 2018\Factures\2018\"
    ActiveWorkbook.SaveAs Filename:="C:\Users\Daniel Pomerleau\Documents\PKD 2018\Factures\2018\" & mon_csv, FileFormat:=xlCSVMSDOS, CreateBackup:=False
    MonFichier3 = ActiveWorkbook.Path & "\" & mon_csv & " .csv"
Code:
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    On Error Resume Next
    Set control_app = GetObject(, "Outlook.Application")
       
    If Err.Number = 0 Then
     With OutMail
        .To = "danielpomerleau@videotron.ca"
        '.CC = Range("D17").Value
        .Subject = "tpkd_wolseley_" & [AI2] & "_" & Format([AJ2], "YYYYMMDD")
        .HTMLBody = "<p>Bonjour,</p>" & "<p>Ci-joint, une facture concernant une ou plusieurs livraisons effectuées à la demande de Wolseley Canada inc. " & "<br>" & "<p>S.v.p., prendre note que seule la facture au format PDF sera considérée comme étant l'originale.<p>Good Day," & "<br>" & "<p>Please find attached an invoice in regard to one or a group of deliveries on behalf of Wolseley Canada Inc. " & "<br>" & "<p>Please note, the only invoice that will be considered as an original, is the PDF format." & "<br>" & "<p>Cordialement, Best Regards," & "<br>" & "<p>" & "Patrick Duval"
        .Attachments.Add MonFichier3
        .Send
   
    End With
    Set OutMail = Nothing
    Set OutApp = Nothing
    End If
   
 ' Raffraichir l'écran
        Application.ScreenUpdating = True
   
' Enregistrer et fermer le classeur
        'ActiveWorkbook.Save
        ActiveWorkbook.Close
Code:
' Sélectionner la feuille Facture
        Sheets("Wolseley Facture").Select
Code:
' Copier et coller les valeurs cellules AT21:BB21 vers AT22 de la feuille Facture Wolseley
        Sheets("Wolseley Facture").Select
        Range("AT21:BB21").Select
        Selection.Copy
        Range("AT22").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
Code:
' Données Wolseley facture vers registre factures, déterminer la ligne pour coller les données
            dernière_ligne_vide = Sheets("Registre factures").Range("B65000").End(xlUp).Row
Code:
' Ne pas raffraichir l'écran
        Application.ScreenUpdating = False
Code:
    For i = 0 To 8
        Sheets("Registre factures").Unprotect "lune666"
        Sheets("Registre factures").Cells(dernière_ligne_vide + 1, 2 + i).Value = Sheets("Wolseley Facture").Cells(22, 46 + i).Value
    Next
Code:
' Ne pas raffraichir l'écran
        Application.ScreenUpdating = False
Code:
' Trier les données par client en ordre croissant
        Sheets("Registre factures").Sort.SortFields.Clear
        Sheets("Registre factures").Sort.SortFields.Add Key:=Range( _
        "C2:C1027"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
Code:
    With Sheets("Registre factures").Sort
        .SetRange Range("A1:K1027")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
        Range("C21").Select
      
    End With
   
' Déterminer la prochaine ligne vide de la colonne B
        dernière_ligne_vide = Sheets("Registre factures").Range("B65000").End(xlUp).Row
Code:
' Sélectionner la feuille Wolseley Facture").
        Sheets("Wolseley Facture").Select
        ActiveSheet.Unprotect "lune666"
       
' Filtrer la feuille Wolseley Facture pour afficher toutes les lignes
        ActiveSheet.Range("$AR$20:$AR$1027").AutoFilter Field:=1
  
' Ne pas raffraichir l'écran
        Application.ScreenUpdating = False
Code:
' Remettre le formulaire FWS à zéro
    Sheets("Facture Wolseley seulement").Visible = True
    Sheets("Facture Wolseley seulement").Select
    Range("D340:K340").Select
    Selection.AutoFill Destination:=Range("D2:K340"), Type:=xlFillDefault
    Range("D2:K1027").Select
    Range("N1027:Q1027").Select
    Selection.AutoFill Destination:=Range("N2:Q1027"), Type:=xlFillDefault
    Range("N2:Q1027").Select
    Range("T1027:V1027").Select
    Selection.AutoFill Destination:=Range("T2:V1027"), Type:=xlFillDefault
    Range("T2:V1027").Select
    Range("X1027:AH1027").Select
    Selection.AutoFill Destination:=Range("X2:AH1027"), Type:=xlFillDefault
    Range("D2").Select
    Sheets("Facture Wolseley seulement").Select
   
    Range("B21").Select
       
' Raffraichir l'écran
        Application.ScreenUpdating = False
       
' Protéger la feuille
        ActiveSheet.Protect "lune666"
       
' Raffraichir l'écran
        Application.ScreenUpdating = True
Code:
' Enregistrer le classeur
        ActiveWorkbook.Save
Code:
End Sub

Very Happy
avatar
IFFIC
Step_Three_VBA
Step_Three_VBA

Localisation : Sud Breizh ar mor
Messages : 373
Date d'inscription : 25/05/2013
Age : 67

Résolu Re: Activer un classeur déjà ouvert

Message par IFFIC le Lun 30 Avr - 17:08

Bonjour Dan et à tous, ou bonsoir s'il est temps de fermer les classeurs,
Le code de Fred est d'une parfaite construction, comme à son habitude. Smile
Mais, j'ai une autre méthode qui pourrait aussi te servir:
La particularité est que Classeur "ESCLAVE l (.xlsx)" n'est là que comme support
Je n'y écris rien, mais cela serait possible.
Si je me suis amusé à ajouter l'instant de l'envoi, ce n'est que pour montrer que beaucoup de chose sont ainsi possibles.
Tu auras donc deux exemples que tu pourras exploiter suivant tes besoins.

Voici mon truc:
https://www.cjoint.com/c/HDEphogwlcs

Yves
avatar
IFFIC
Step_Three_VBA
Step_Three_VBA

Localisation : Sud Breizh ar mor
Messages : 373
Date d'inscription : 25/05/2013
Age : 67

Résolu Re: Activer un classeur déjà ouvert

Message par IFFIC le Lun 30 Avr - 17:17

Pardon Dan, je n'avais pas vu ton dernier message. Suspect affraid
Je dois abandonner, car jamais je n'aurai la grosse cochonnerie d'Outlook sur mon ordi,
et qu'il est hors de question que je m'amuse à protéger un classeur ou une feuille!

Ceci dit en toute sympathie, et en te souhaitant belle réussite dans ton projet.
Yves


Dernière édition par IFFIC le Lun 30 Avr - 17:19, édité 1 fois
avatar
AdminPVB
Admin
Admin

Localisation : France Nord 59
Messages : 2046
Date d'inscription : 24/05/2013
Age : 42

Résolu Re: Activer un classeur déjà ouvert

Message par AdminPVB le Lun 30 Avr - 17:18

Bonjour IFFIC,Danpom302.
dans l'attente que tu puisses regarder le code de Yves, j'ai un doute sur ceci:
Code:
Set control_app = Nothing
il n'est pas présent dans le code et comme tu as une gestion d'erreur juste avant le deuxième code il se peut que cela génère une erreur de ce fait 
Err.Number n'est pas = 0 et ne compile pas sous cette condition qui est fausse.
le reste du code semble bon à l'exception de tout les select et activate par-ci par la (mais ce n'est pas le sujet principal)
A bientôt.
Je vais également regarder la proposition d'Yves pour m'instruire davantage.


_________________
Avatar


Bienvenue sur

Dans votre message d'origine cliquer sur le bouton

Tout en bas sur Modifier le titre du sujet cliquer sur le bouton : Résolu !!!
Changer l’icône du sujet par le bouton

Tout simplement.


Merci pour votre présence ou passage sur le site de programmer-en-vb

Celui qui croit tout connaitre, ne connait sans doute pas grand chose,chacun apporte son savoir, mais on a tous tout à apprendre ....  

study

avatar
AdminPVB
Admin
Admin

Localisation : France Nord 59
Messages : 2046
Date d'inscription : 24/05/2013
Age : 42

Résolu Re: Activer un classeur déjà ouvert

Message par AdminPVB le Lun 30 Avr - 17:31

Rebonjour,
Yves Beau code sauf une petite chose, Embarassed .

l'enregistrement du fichier en CSV est en fait une fausse extension du CSV. comme tu l'écris.

Pour voir si ton fichier est bien un CSV il faut que tu l'ouvres avec un bloc note.

si tu as des Hiéroglyphes c'est que ton fichier est en fait un xlsx mis en csv.
si tu as les instructions claire séparer par des ; ou , c'est qu'il s'agit bien d'un fichier avec extension Csv.
Merci pour ton aide une fois de plus.
A bientôt. Laughing


_________________
Avatar


Bienvenue sur

Dans votre message d'origine cliquer sur le bouton

Tout en bas sur Modifier le titre du sujet cliquer sur le bouton : Résolu !!!
Changer l’icône du sujet par le bouton

Tout simplement.


Merci pour votre présence ou passage sur le site de programmer-en-vb

Celui qui croit tout connaitre, ne connait sans doute pas grand chose,chacun apporte son savoir, mais on a tous tout à apprendre ....  

study

avatar
IFFIC
Step_Three_VBA
Step_Three_VBA

Localisation : Sud Breizh ar mor
Messages : 373
Date d'inscription : 25/05/2013
Age : 67

Résolu Re: Activer un classeur déjà ouvert

Message par IFFIC le Lun 30 Avr - 18:34

AdminPVB a écrit:Bonsoir Daniel,Yves,Thierry.

@Danpom302, je vais te construire un exemple demain.
@ Iffic et Berly .
l'imagerie d'internet n'a pas de limite, pourquoi ne pas ouvrir un fil d'image délirante
comme vos échanges musicaux,cela serait un régal

Pour y répondre quant au partage d'images amusantes,
voici celle qui me vient en premier lieu à l'idée:



Un sujet de cet ordre pour partager et se marrer est une belle idée, mais à condition que l'on soit plus que deux Smile
avatar
Berly
Step_Three_VBA
Step_Three_VBA

Localisation : Rodez(Aveyron)
Messages : 485
Date d'inscription : 23/04/2017
Age : 53

Résolu Re: Activer un classeur déjà ouvert

Message par Berly le Lun 30 Avr - 20:10

Bonsoir a tous  Very Happy Very Happy Very Happy.

Même a deux Yves, on réussira a remplir la salle  Laughing Laughing Laughing.

Wink .
avatar
danpom302
Step_Three_VBA
Step_Three_VBA

Localisation : Québec
Messages : 428
Date d'inscription : 23/09/2013
Age : 67

Résolu Re: Activer un classeur déjà ouvert

Message par danpom302 le Lun 30 Avr - 21:54

Bonjour à tous,

@ IFFFIC : Pas de problème pour l'abandon. Mon client et moi utilisons Outlook qui fonctionne généralement très bien et sans problème. Pour ce qui est de la protection du classeur, celle-ci sert iniquement à éviter qu'un utilisateur non expérimenté comme mon client, efface des formules par erreur. Je sais très bien que l'on peut déverrouiller Excel très facilement au même titre qu'un code vba.  Very Happy Very Happy

@ admimPVB : J'ai essayé en rajoutant ton code (Voir plus bas) d'envoyer par courriel le fichier csv produit mais sans succès. Le message s'envoie mais pas le fichier csv.

Voici la partie du code modifié en espérant que je l'ai fait au bon endroit.

Code:
' Envoyer ce fichier par courriel
    Dim MonFichier3 As String
    Dim mon_csv As String
           
    mon_csv = "tpkd" & "_" & "wolseley" & "_" & [AI2] & "_" & Format([AJ2], "YYYYMMDD")
    ChDir "C:\Users\Daniel Pomerleau\Documents\PKD 2018\Factures\2018\"
    ActiveWorkbook.SaveAs Filename:="C:\Users\Daniel Pomerleau\Documents\PKD 2018\Factures\2018\" & mon_csv, FileFormat:=xlCSVMSDOS, CreateBackup:=False
    MonFichier3 = ActiveWorkbook.Path & "\" & mon_csv & " .csv"
Code:
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    On Error Resume Next
    Set control_app = Nothing 
       
    If Err.Number = 0 Then
     With OutMail
        .To = "danielpomerleau@videotron.ca"
        '.CC = Range("D17").Value
        .Subject = "tpkd_wolseley_" & [AI2] & "_" & Format([AJ2], "YYYYMMDD")
        .HTMLBody = "<p>Bonjour,</p>" & "<p>Ci-joint, une facture concernant une ou plusieurs livraisons effectuées à la demande de Wolseley Canada inc. " & "<br>" & "<p>S.v.p., prendre note que seule la facture au format PDF sera considérée comme étant l'originale.<p>Good Day," & "<br>" & "<p>Please find attached an invoice in regard to one or a group of deliveries on behalf of Wolseley Canada Inc. " & "<br>" & "<p>Please note, the only invoice that will be considered as an original, is the PDF format." & "<br>" & "<p>Cordialement, Best Regards," & "<br>" & "<p>" & "Patrick Duval"
        .Attachments.Add MonFichier3
        .Send
   
    End With
    Set OutMail = Nothing
    Set OutApp = Nothing
    End If

Je suis à cours d'idée.

Merci pour ton aide,  Very Happy

Dan
avatar
danpom302
Step_Three_VBA
Step_Three_VBA

Localisation : Québec
Messages : 428
Date d'inscription : 23/09/2013
Age : 67

Résolu Re: Activer un classeur déjà ouvert

Message par danpom302 le Lun 30 Avr - 22:00

Bonjour adminPVB,

Le problème se situe ici :
Code:
.Attachments.Add MonFichier3

Le fichier ne se joint pas au courriel envoyé. La question est, pourquoi?

Merci encore une fois pour ton aide,

Dan

P.S. : C'est le seul problème qu'il me reste à régler.  Very Happy
avatar
AdminPVB
Admin
Admin

Localisation : France Nord 59
Messages : 2046
Date d'inscription : 24/05/2013
Age : 42

Résolu Re: Activer un classeur déjà ouvert

Message par AdminPVB le Lun 30 Avr - 22:17

OUps, DanPom302,
en fait c'est pas comme ça.
il s'agit de ne pas modifier tes codes,sauf d'ajouter sur le premier envoi du premier fichier la ligne avec Nothing 
Set control_app = nothing avec les deux autres premiers nothing du code ou tu envoi le fichier et non le fichier3
tu ne dois rien changer au reste du code.
A+


_________________
Avatar


Bienvenue sur

Dans votre message d'origine cliquer sur le bouton

Tout en bas sur Modifier le titre du sujet cliquer sur le bouton : Résolu !!!
Changer l’icône du sujet par le bouton

Tout simplement.


Merci pour votre présence ou passage sur le site de programmer-en-vb

Celui qui croit tout connaitre, ne connait sans doute pas grand chose,chacun apporte son savoir, mais on a tous tout à apprendre ....  

study

avatar
danpom302
Step_Three_VBA
Step_Three_VBA

Localisation : Québec
Messages : 428
Date d'inscription : 23/09/2013
Age : 67

Résolu Re: Activer un classeur déjà ouvert

Message par danpom302 le Lun 30 Avr - 22:25

Bonsoir adminPVB,

Merci pour ton conseil mais je ne suis pas certain de bien comprendre mais j'essai quand même et te reviens.

Merci et à +,

Dan
avatar
AdminPVB
Admin
Admin

Localisation : France Nord 59
Messages : 2046
Date d'inscription : 24/05/2013
Age : 42

Résolu Re: Activer un classeur déjà ouvert

Message par AdminPVB le Lun 30 Avr - 22:28

Premier code:
Code:
 Dim OutApp As Object
    Dim OutMail As Object
    Dim dernière_ligne_vide As Long
   
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    On Error Resume Next
    Dim control_app
    Set control_app = GetObject(, "Outlook.Application")
       
    If Err.Number = 0 Then
     With OutMail
        .To = Range("D16").Value
        .CC = Range("D17").Value
        .Subject = "tpkd_wolseley_" & [L4] & "_" & Format([G5], "YYYYMMDD")
        .HTMLBody = "<p>Bonjour,</p>" & "<p>Ci-joint, une facture concernant une ou plusieurs livraisons effectuées à la demande de Wolseley Canada inc. " & "<br>" & "<p>S.v.p., prendre note que seule la facture au format PDF sera considérée comme étant l'originale.<p>Good Day," & "<br>" & "<p>Please find attached an invoice in regard to one or a group of deliveries on behalf of Wolseley Canada Inc. " & "<br>" & "<p>Please note, the only invoice that will be considered as an original, is the PDF format." & "<br>" & "<p>Cordialement, Best Regards," & "<br>" & "<p>" & "Patrick Duval"
        .Attachments.Add MonFichier
        .Send
   
    End With
'modification ici   
Set control_app = Nothing   
    Set OutMail = Nothing
    Set OutApp = Nothing
    End If
deuxième code
Code:
Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    On Error Resume Next
    Set control_app = GetObject(, "Outlook.Application")
       
    If Err.Number = 0 Then
     With OutMail
        .To = "danielpomerleau@videotron.ca"
        '.CC = Range("D17").Value
        .Subject = "tpkd_wolseley_" & [AI2] & "_" & Format([AJ2], "YYYYMMDD")
        .HTMLBody = "<p>Bonjour,</p>" & "<p>Ci-joint, une facture concernant une ou plusieurs livraisons effectuées à la demande de Wolseley Canada inc. " & "<br>" & "<p>S.v.p., prendre note que seule la facture au format PDF sera considérée comme étant l'originale.<p>Good Day," & "<br>" & "<p>Please find attached an invoice in regard to one or a group of deliveries on behalf of Wolseley Canada Inc. " & "<br>" & "<p>Please note, the only invoice that will be considered as an original, is the PDF format." & "<br>" & "<p>Cordialement, Best Regards," & "<br>" & "<p>" & "Patrick Duval"
        .Attachments.Add MonFichier3
        .Send
   
    End With
'idem modification
Set control_app = Nothing
    Set OutMail = Nothing
    Set OutApp = Nothing
    End If
   
 ' Raffraichir l'écran
        Application.ScreenUpdating = True
   
' Enregistrer et fermer le classeur
        'ActiveWorkbook.Save
        ActiveWorkbook.Close
ce sont des extraits de ton code.
A+


_________________
Avatar


Bienvenue sur

Dans votre message d'origine cliquer sur le bouton

Tout en bas sur Modifier le titre du sujet cliquer sur le bouton : Résolu !!!
Changer l’icône du sujet par le bouton

Tout simplement.


Merci pour votre présence ou passage sur le site de programmer-en-vb

Celui qui croit tout connaitre, ne connait sans doute pas grand chose,chacun apporte son savoir, mais on a tous tout à apprendre ....  

study

avatar
danpom302
Step_Three_VBA
Step_Three_VBA

Localisation : Québec
Messages : 428
Date d'inscription : 23/09/2013
Age : 67

Résolu Re: Activer un classeur déjà ouvert

Message par danpom302 le Lun 30 Avr - 22:37

Bonsoir adminPvb,

Je viens d'essayer. Le fichier au format pdf s'envoie avec le premier courriel. Quant au 2e courriel, il s'envoie mais sans le fichier csv.

Je sais que mon code est très long mais je le post à nouveau pour que tu puisses voir si j'ai fait comme tu me le recommandais.

Code:
Sub Courriel_Excel_3()
'
' Déprotéger, filtrer et imprimer la facture
        Sheets("Wolseley Facture").Select
        ActiveSheet.Unprotect "lune666"
       
' Ne pas raffraichir l'écran
        Application.ScreenUpdating = False
       
' Activé le filtre
        Range("$AR$20:$AR$1056").AutoFilter Field:=1, Criteria1:="<>"
       
' Imrimer le document
        'ActiveWindow.SelectedSheets.PrintOut Copies:=1

    Dim MonFichier As String
    Dim MonAdresse As String
    Dim mon_pdf As String
        mon_pdf = [G2] & [H2] & [G3] & [H3] & [G4] & [H4] & Format([G5], "YYYYMMDD")
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ActiveWorkbook.Path & "\" & mon_pdf & " .pdf", Quality:=xlQualityStandard
        MonFichier = ActiveWorkbook.Path & "\" & mon_pdf & " .pdf"
        MonAdresse = Range("F5").Text

    Call FichierPDF_3(MonAdresse, MonFichier)
   
End Sub

Sub FichierPDF_3(AdresseMail, MonFichier)

    Dim OutApp As Object
    Dim OutMail As Object
    Dim dernière_ligne_vide As Long
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    On Error Resume Next
    Dim control_app
    Set control_app = Nothing 'GetObject(, "Outlook.Application")
       
    If Err.Number = 0 Then
    With OutMail
        .To = Range("D16").Value
        .CC = Range("D17").Value
        .Subject = "tpkd_wolseley_" & [L4] & "_" & Format([G5], "YYYYMMDD")
        .HTMLBody = "<p>Bonjour,</p>" & "<p>Ci-joint, une facture concernant une ou plusieurs livraisons effectuées à la demande de Wolseley Canada inc. " & "<br>" & "<p>S.v.p., prendre note que seule la facture au format PDF sera considérée comme étant l'originale.<p>Good Day," & "<br>" & "<p>Please find attached an invoice in regard to one or a group of deliveries on behalf of Wolseley Canada Inc. " & "<br>" & "<p>Please note, the only invoice that will be considered as an original, is the PDF format." & "<br>" & "<p>Cordialement, Best Regards," & "<br>" & "<p>" & "Patrick Duval"
        .Attachments.Add MonFichier
        .Send
   
    End With
    Set OutMail = Nothing
    Set OutApp = Nothing
    End If
       
' Ne pas raffraichir l'écran
        Application.ScreenUpdating = False
       
' Copier les données C20:AN1056 du formulaire Wolseley Factures
    Range("C20:AN1056").Select
    Range("C20").Activate
    Selection.Copy
   
    Workbooks.Open Filename:= _
        "C:\Users\Daniel Pomerleau\Documents\PKD 2018\Factures\2018\y_tpkd_wolseley.csv"
    Windows("y_tpkd_wolseley_.csv").Activate
    Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("A1").Select
   
' Formater la feuille
    Columns("B:B").Select
    Range("B:B,AJ:AJ").Select
    Range("AJ1").Activate
    Selection.NumberFormat = "mm/dd/yyyy"
    Rows("1:1").Select
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlBottom
        .WrapText = True
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlCenter
        .WrapText = True
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = True
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Columns("A:AL").Select
    Selection.ColumnWidth = 25
    Range("A1").Select
   
' Envoyer ce fichier par courriel
    Dim MonFichier3 As String
    Dim mon_csv As String
           
    mon_csv = "tpkd" & "_" & "wolseley" & "_" & [AI2] & "_" & Format([AJ2], "YYYYMMDD")
    ChDir "C:\Users\Daniel Pomerleau\Documents\PKD 2018\Factures\2018\"
    ActiveWorkbook.SaveAs Filename:="C:\Users\Daniel Pomerleau\Documents\PKD 2018\Factures\2018\" & mon_csv, FileFormat:=xlCSVMSDOS, CreateBackup:=False
    MonFichier3 = ActiveWorkbook.Path & "\" & mon_csv & " .csv"

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    On Error Resume Next
           
    If Err.Number = 0 Then
    With OutMail
        .To = "danielpomerleau@videotron.ca"
        '.CC = Range("D17").Value
        .Subject = "tpkd_wolseley_" & [AI2] & "_" & Format([AJ2], "YYYYMMDD")
        .HTMLBody = "<p>Bonjour,</p>" & "<p>Ci-joint, une facture concernant une ou plusieurs livraisons effectuées à la demande de Wolseley Canada inc. " & "<br>" & "<p>S.v.p., prendre note que seule la facture au format PDF sera considérée comme étant l'originale.<p>Good Day," & "<br>" & "<p>Please find attached an invoice in regard to one or a group of deliveries on behalf of Wolseley Canada Inc. " & "<br>" & "<p>Please note, the only invoice that will be considered as an original, is the PDF format." & "<br>" & "<p>Cordialement, Best Regards," & "<br>" & "<p>" & "Patrick Duval"
        .Attachments.Add MonFichier3
        .Send
   
    End With
    Set OutMail = Nothing
    Set OutApp = Nothing
    End If
   
' Remettre le formulaire à zéro
    Range("A1:AN1056").Select
    Selection.Delete
    Range("A1").Select
   
' Fermer le formulaire
    ActiveWorkbook.Save
    ActiveWorkbook.Close
   
   
 ' Raffraichir l'écran
        Application.ScreenUpdating = True
   
' Enregistrer et fermer le classeur
        'ActiveWorkbook.Save
        ActiveWorkbook.Close

' Sélectionner la feuille Facture
        Sheets("Wolseley Facture").Select

' Copier et coller les valeurs cellules AT21:BB21 vers AT22 de la feuille Facture Wolseley
        Sheets("Wolseley Facture").Select
        Range("AT21:BB21").Select
        Selection.Copy
        Range("AT22").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

' Données Wolseley facture vers registre factures, déterminer la ligne pour coller les données
            dernière_ligne_vide = Sheets("Registre factures").Range("B65000").End(xlUp).Row

' Ne pas raffraichir l'écran
        Application.ScreenUpdating = False

    For i = 0 To 8
        Sheets("Registre factures").Unprotect "lune666"
        Sheets("Registre factures").Cells(dernière_ligne_vide + 1, 2 + i).Value = Sheets("Wolseley Facture").Cells(22, 46 + i).Value
    Next

' Ne pas raffraichir l'écran
        Application.ScreenUpdating = False

' Trier les données par client en ordre croissant
        Sheets("Registre factures").Sort.SortFields.Clear
        Sheets("Registre factures").Sort.SortFields.Add Key:=Range( _
        "C2:C1027"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal

    With Sheets("Registre factures").Sort
        .SetRange Range("A1:K1027")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
        Range("C21").Select
     
    End With
   
' Déterminer la prochaine ligne vide de la colonne B
        dernière_ligne_vide = Sheets("Registre factures").Range("B65000").End(xlUp).Row

' Sélectionner la feuille Wolseley Facture").
        Sheets("Wolseley Facture").Select
        ActiveSheet.Unprotect "lune666"
       
' Filtrer la feuille Wolseley Facture pour afficher toutes les lignes
        ActiveSheet.Range("$AR$20:$AR$1027").AutoFilter Field:=1
 
' Ne pas raffraichir l'écran
        Application.ScreenUpdating = False

' Remettre le formulaire FWS à zéro
    Sheets("Facture Wolseley seulement").Visible = True
    Sheets("Facture Wolseley seulement").Select
    Range("D340:K340").Select
    Selection.AutoFill Destination:=Range("D2:K340"), Type:=xlFillDefault
    Range("D2:K1027").Select
    Range("N1027:Q1027").Select
    Selection.AutoFill Destination:=Range("N2:Q1027"), Type:=xlFillDefault
    Range("N2:Q1027").Select
    Range("T1027:V1027").Select
    Selection.AutoFill Destination:=Range("T2:V1027"), Type:=xlFillDefault
    Range("T2:V1027").Select
    Range("X1027:AH1027").Select
    Selection.AutoFill Destination:=Range("X2:AH1027"), Type:=xlFillDefault
    Range("D2").Select
    Sheets("Facture Wolseley seulement").Select
   
    Range("B21").Select
       
' Raffraichir l'écran
        Application.ScreenUpdating = False
       
' Protéger la feuille
        ActiveSheet.Protect "lune666"
       
' Raffraichir l'écran
        Application.ScreenUpdating = True

' Enregistrer le classeur
        ActiveWorkbook.Save

End Sub


Désolé pour mon incompréhension, Sad

Dan
avatar
AdminPVB
Admin
Admin

Localisation : France Nord 59
Messages : 2046
Date d'inscription : 24/05/2013
Age : 42

Résolu Re: Activer un classeur déjà ouvert

Message par AdminPVB le Lun 30 Avr - 22:52

Daniel,
as tu vu mon message n° 22
A+


_________________
Avatar


Bienvenue sur

Dans votre message d'origine cliquer sur le bouton

Tout en bas sur Modifier le titre du sujet cliquer sur le bouton : Résolu !!!
Changer l’icône du sujet par le bouton

Tout simplement.


Merci pour votre présence ou passage sur le site de programmer-en-vb

Celui qui croit tout connaitre, ne connait sans doute pas grand chose,chacun apporte son savoir, mais on a tous tout à apprendre ....  

study

avatar
danpom302
Step_Three_VBA
Step_Three_VBA

Localisation : Québec
Messages : 428
Date d'inscription : 23/09/2013
Age : 67

Résolu Re: Activer un classeur déjà ouvert

Message par danpom302 le Mar 1 Mai - 1:21

Bonsoir adminPVB,

Oui j'ai copier coller tes deux codes dans mon code, et encore une fois, le pdf s'attache au courriel qui a été envoyé. Malheureusement, le fichier csv ne s'attache toujours pas au 2e courriel.

Il y a sûrement une raison mais je ne peux pas voir laquelle.

Merci,

Dan

Mon code modifié :
Code:
Sub Courriel_Excel_3()
'
' Déprotéger, filtrer et imprimer la facture
        Sheets("Wolseley Facture").Select
        ActiveSheet.Unprotect "lune666"
       
' Ne pas raffraichir l'écran
        Application.ScreenUpdating = False
       
' Activé le filtre
        Range("$AR$20:$AR$1056").AutoFilter Field:=1, Criteria1:="<>"
       
' Imrimer le document
        'ActiveWindow.SelectedSheets.PrintOut Copies:=1

    Dim MonFichier As String
    Dim MonAdresse As String
    Dim mon_pdf As String
        mon_pdf = [G2] & [H2] & [G3] & [H3] & [G4] & [H4] & Format([G5], "YYYYMMDD")
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ActiveWorkbook.Path & "\" & mon_pdf & " .pdf", Quality:=xlQualityStandard
        MonFichier = ActiveWorkbook.Path & "\" & mon_pdf & " .pdf"
        MonAdresse = Range("F5").Text

    Call FichierPDF_3(MonAdresse, MonFichier)
   
End Sub

Sub FichierPDF_3(AdresseMail, MonFichier)

    Dim OutApp As Object
    Dim OutMail As Object
    Dim dernière_ligne_vide As Long
   
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    On Error Resume Next
    Dim control_app
    Set control_app = GetObject(, "Outlook.Application")
       
    If Err.Number = 0 Then
    With OutMail
        .To = Range("D16").Value
        .CC = Range("D17").Value
        .Subject = "tpkd_wolseley_" & [L4] & "_" & Format([G5], "YYYYMMDD")
        .HTMLBody = "<p>Bonjour,</p>" & "<p>Ci-joint, une facture concernant une ou plusieurs livraisons effectuées à la demande de Wolseley Canada inc. " & "<br>" & "<p>S.v.p., prendre note que seule la facture au format PDF sera considérée comme étant l'originale.<p>Good Day," & "<br>" & "<p>Please find attached an invoice in regard to one or a group of deliveries on behalf of Wolseley Canada Inc. " & "<br>" & "<p>Please note, the only invoice that will be considered as an original, is the PDF format." & "<br>" & "<p>Cordialement, Best Regards," & "<br>" & "<p>" & "Patrick Duval"
        .Attachments.Add MonFichier
        .Send
   
    End With
'modification ici
Set control_app = Nothing
    Set OutMail = Nothing
    Set OutApp = Nothing
    End If
       
' Ne pas raffraichir l'écran
        Application.ScreenUpdating = False
       
' Copier les données C20:AN1056 du formulaire Wolseley Factures
    Range("C20:AN1056").Select
    Range("C20").Activate
    Selection.Copy
   
    Workbooks.Open Filename:= _
        "C:\Users\Daniel Pomerleau\Documents\PKD 2018\Factures\2018\y_tpkd_wolseley.csv"
    Windows("y_tpkd_wolseley_.csv").Activate
    Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("A1").Select
   
' Formater la feuille
    Columns("B:B").Select
    Range("B:B,AJ:AJ").Select
    Range("AJ1").Activate
    Selection.NumberFormat = "mm/dd/yyyy"
    Rows("1:1").Select
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlBottom
        .WrapText = True
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlCenter
        .WrapText = True
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = True
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Columns("A:AL").Select
    Selection.ColumnWidth = 25
    Range("A1").Select
   
' Envoyer ce fichier par courriel
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    On Error Resume Next
    Set control_app = GetObject(, "Outlook.Application")
       
    If Err.Number = 0 Then
    With OutMail
        .To = "danielpomerleau@videotron.ca"
        '.CC = Range("D17").Value
        .Subject = "tpkd_wolseley_" & [AI2] & "_" & Format([AJ2], "YYYYMMDD")
        .HTMLBody = "<p>Bonjour,</p>" & "<p>Ci-joint, une facture concernant une ou plusieurs livraisons effectuées à la demande de Wolseley Canada inc. " & "<br>" & "<p>S.v.p., prendre note que seule la facture au format PDF sera considérée comme étant l'originale.<p>Good Day," & "<br>" & "<p>Please find attached an invoice in regard to one or a group of deliveries on behalf of Wolseley Canada Inc. " & "<br>" & "<p>Please note, the only invoice that will be considered as an original, is the PDF format." & "<br>" & "<p>Cordialement, Best Regards," & "<br>" & "<p>" & "Patrick Duval"
        .Attachments.Add MonFichier3
        .Send
   
    End With
'idem modification
Set control_app = Nothing
    Set OutMail = Nothing
    Set OutApp = Nothing
    End If
   
 ' Raffraichir l'écran
        Application.ScreenUpdating = True
   
' Enregistrer et fermer le classeur
        ActiveWorkbook.Close
   
' Remettre le formulaire à zéro
    Range("A1:AN1056").Select
    Selection.Delete
    Range("A1").Select
   
' Fermer le formulaire
    ActiveWorkbook.Save
    ActiveWorkbook.Close
   
   
 ' Raffraichir l'écran
        Application.ScreenUpdating = True
   
' Enregistrer et fermer le classeur
        'ActiveWorkbook.Save
        ActiveWorkbook.Close

' Sélectionner la feuille Facture
        Sheets("Wolseley Facture").Select

' Copier et coller les valeurs cellules AT21:BB21 vers AT22 de la feuille Facture Wolseley
        Sheets("Wolseley Facture").Select
        Range("AT21:BB21").Select
        Selection.Copy
        Range("AT22").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

' Données Wolseley facture vers registre factures, déterminer la ligne pour coller les données
            dernière_ligne_vide = Sheets("Registre factures").Range("B65000").End(xlUp).Row

' Ne pas raffraichir l'écran
        Application.ScreenUpdating = False

    For i = 0 To 8
        Sheets("Registre factures").Unprotect "lune666"
        Sheets("Registre factures").Cells(dernière_ligne_vide + 1, 2 + i).Value = Sheets("Wolseley Facture").Cells(22, 46 + i).Value
    Next

' Ne pas raffraichir l'écran
        Application.ScreenUpdating = False

' Trier les données par client en ordre croissant
        Sheets("Registre factures").Sort.SortFields.Clear
        Sheets("Registre factures").Sort.SortFields.Add Key:=Range( _
        "C2:C1027"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal

    With Sheets("Registre factures").Sort
        .SetRange Range("A1:K1027")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
        Range("C21").Select
     
    End With
   
' Déterminer la prochaine ligne vide de la colonne B
        dernière_ligne_vide = Sheets("Registre factures").Range("B65000").End(xlUp).Row

' Sélectionner la feuille Wolseley Facture").
        Sheets("Wolseley Facture").Select
        ActiveSheet.Unprotect "lune666"
       
' Filtrer la feuille Wolseley Facture pour afficher toutes les lignes
        ActiveSheet.Range("$AR$20:$AR$1027").AutoFilter Field:=1
 
' Ne pas raffraichir l'écran
        Application.ScreenUpdating = False

' Remettre le formulaire FWS à zéro
    Sheets("Facture Wolseley seulement").Visible = True
    Sheets("Facture Wolseley seulement").Select
    Range("D340:K340").Select
    Selection.AutoFill Destination:=Range("D2:K340"), Type:=xlFillDefault
    Range("D2:K1027").Select
    Range("N1027:Q1027").Select
    Selection.AutoFill Destination:=Range("N2:Q1027"), Type:=xlFillDefault
    Range("N2:Q1027").Select
    Range("T1027:V1027").Select
    Selection.AutoFill Destination:=Range("T2:V1027"), Type:=xlFillDefault
    Range("T2:V1027").Select
    Range("X1027:AH1027").Select
    Selection.AutoFill Destination:=Range("X2:AH1027"), Type:=xlFillDefault
    Range("D2").Select
    Sheets("Facture Wolseley seulement").Select
   
    Range("B21").Select
       
' Raffraichir l'écran
        Application.ScreenUpdating = False
       
' Protéger la feuille
        ActiveSheet.Protect "lune666"
       
' Raffraichir l'écran
        Application.ScreenUpdating = True

' Enregistrer le classeur
        ActiveWorkbook.Save

End Sub


Contenu sponsorisé

Résolu Re: Activer un classeur déjà ouvert

Message par Contenu sponsorisé


    La date/heure actuelle est Sam 23 Juin - 3:02