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 Re: Activer un classeur déjà ouvert

Message par danpom302 le Mar 1 Mai - 1:34

Bonsoir adminPVB,

Un autre essai et toujours le même résultat. Le csv ne s'attache pas au 2e courriel envoyé.

Mon Code modifier :
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
   
' Remettre le formulaire à zéro
    Range("A1:AN1056").Select
    Selection.Delete
    Range("A1").Select
   
' Fermer le formulaire
    'Application.DisplayAlerts = False
    ActiveWorkbook.Save
    ActiveWorkbook.Close
   
 ' Raffraichir l'écran
        Application.ScreenUpdating = True
   
' 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


Merci pour ton 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 Mar 1 Mai - 11:28

Bonjour,
Si c'est le code complet il manque la création du fichier pour l'envoi.
Monfichier3 n'est pas présent dans le code,il ne peut donc pas être envoyé.
A part ça je pense que c'est ok
A bientôt


_________________
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 - 16:39

Bonjour adminPVB,

Merci pour ton info.

J'ai fait ce que tu m'as recommandé. J'ai modifié mon code pour récupérer le nom de mon nouveau fichier créé en enregistrant sous. MonFichier3 = ThisWorkbook.Name
qui est celui affiché à l'écran.

Un autre problème que j'ai est que je ne parvients pas à passer d'un classeur ouvert à un autre ouvert également, afin d'exécuter des tâches via ma macro.

Voici donc 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_NoFacture_Date Macro
    Range("L4,L6").Select
    Range("L6").Activate
    Selection.Copy
   
' Ouvrir le classeur y_tpkd_wolseley.csv
    Workbooks.Open Filename:= _
        "C:\Users\Daniel Pomerleau\Documents\PKD 2018\Factures\2018\y_tpkd_wolseley.csv"
            Windows("y_tpkd_wolseley_facture_no_date.csv").Activate
    Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("A1").Select

' Enregistrer le fichier actif sous tpkd_wolseley_No de la facture_Date
    ActiveWorkbook.SaveAs "tpkd_" & "wolseley_" & [A1] & "_" & Format([A2], "YYYYMMDD")
   
' Effacer les données du formulaire
    Cells.Select
    Selection.ClearContents
   
' Récupérer le nom du fichier actif                ' C'est à partir d'ici que ça ne semble pas fonctionner
    MonFichier3 = ThisWorkbook.Name

' Ouvrir le formulaire z_tpkd_factureV4.xlsm
    Workbooks.Open Filename:= _
        "C:\Users\Daniel Pomerleau\Documents\PKD 2018\Factures\2018\z_tpkd_factureV4.xlsm"
        Windows("z_tpkd_factureV4.xlsm").Activate

' Copier les données de la plage C20:AN1056
    Range("C20:AN1056").Select
    Range("C20").Activate
    Selection.Copy

' Accéder au fichier MonFichier3
    MonFichier3.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
   
' Remettre le formulaire à zéro
    Range("A1:AN1056").Select
    Selection.Delete
    Range("A1").Select
   
' Fermer le formulaire
    'Application.DisplayAlerts = False
    ActiveWorkbook.Close
   
 ' Raffraichir l'écran
        Application.ScreenUpdating = True
   
' 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


Je suis vraiment désolé de te causé autant de casse tête.

Merci pour ton aide,

Dan

Si jamais tu veux accéder à mon ordinateur via TeamViewer, tu n'as qu'à me le dire. Je n'aime pas te dire ça mais il me reste 2 jours avant de remettre le PC à mon client. Sad
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 Mer 2 Mai - 17:17

Bonjour à tous, ou Bonsoir si les yeux commencent à piquer un peu,

A l'attention de Dan, et pour compléter ce que j'ai dit à propos d'Outlook:

Je te joins un tout petit Classeur que tu vas ouvrir puisqu'il pourrait t'intéresser.

https://www.cjoint.com/c/HEcpqwmA4Js


Celui-ci récupérant l'adresse précise de ton bureau, tu pourras en imaginer la suite malveillante.

- Je peux avec cette adresse fouiller dans tous tes dossiers, chercher les noms probables comme ton pseudo,
celui de tes enfants, banque, perso, codes, comptes, adresses, annuaire, contacts, favoris Et c…

- Par la suite, je crée un classeur, un Word, voire un Txt et donne l'ordre à ton Outlook de me l'envoyer, sans te demander de confirmation.
- Je pourrais même "Kill" beaucoup de trucs.
- Pour éviter éventuelles poursuites judiciaires, je n'aurais qu'à dire que je me suis seulement amusé,
et que malheureusement je me suis mélangé les pinceaux dans mon code. (Voire même utiliser une adresse IP, et serveur provisoires)

CQFD, pour confirmer ma mise en garde concernant Outlook qui est la porte ouverte à tous les curieux!

Amicalement, pour une amicale mise en garde.
Yves
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 Jeu 3 Mai - 22:38

Bonjour à tous,

J'ai réglé le tout en accord avec mon client, d'envoyer au sous-traitant que exige un fichier csv identique à un fichier Excel xlsx une facture en format pdf, une en Excel xlsx et une en csv. Il utilisera celle qu'il désire.

Problème transféré dans sa cours.

Merci à tous pour votre aide. J'ai encore appris beaucoup au niveau de la programmation en vba.

Dan

Contenu sponsorisé

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

Message par Contenu sponsorisé


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