[VBA] Besoin d'aide pour la création d'une macro [Résolu]

villette54

XLDnaute Junior
Bonjour,

Je suis débutant en VBA, et j'ai dans le cadre de mon travail, besoin d'utiliser VBA de façon un peu plus avancée que ce que je suis capable de faire.

Il s'agit d'un fichier pour lequel je dois extraire des infos d'une "base de données" si je puis dire, et en ajouter. J'ai pour ce faire créer 4 boutons, qui doivent chacun remplir une fonction. Seulement je suis incapable de transposer ce que je souhaite dans VBA. (Toutes les explications de mes besoins se trouve sur mon document)

Je cherche donc quelqu'un qui pourrait m'aider à créer ces macros, ou au moins me mettre sur la piste parce-que actuellement, malgré tous les tutos que je consulte je suis dans le flou total.

Merci d'avance pour votre aide.
 

Pièces jointes

  • Test Suivi Cotopo.xlsm
    113.7 KB · Affichages: 147
Dernière édition:

villette54

XLDnaute Junior
Re : [VBA] Besoin d'aide pour la création d'une macro

Merci !

Pour ce qui est de mon plantage Excel :
Code:
For i = 1 To 2 'Boucle sur les 2 pages, vu que c'est la même
          fileTarget.Sheets(i).Activate
            ActiveWindow.View = xlPageBreakPreview 'Excel plante en traitant cette ligne. Et si je la met en commentaire : la ligne suivante se met en défaut et fait planté à son tour.
          With fileTarget.Sheets(i).PageSetup
               .PrintArea = "$A$1:$i$56" 'A vérifier, j'ai pris le fichier exemple de formulaire.
               .LeftMargin = Application.InchesToPoints(0) 'Marge haut/bas/gauche/droite = 0
               .RightMargin = Application.InchesToPoints(0)
               .TopMargin = Application.InchesToPoints(0)
               .BottomMargin = Application.InchesToPoints(0)
                .HeaderMargin = Application.InchesToPoints(0)    'A définir si ok
               .FooterMargin = Application.InchesToPoints(0)    'A définir si ok
               .Zoom = False   'Option d'impression : centrée sur la feuille
               .FitToPagesWide = 1
               .FitToPagesTall = 1
                End With
            Next i


PS : comment fais-tu pour mettre le code en couleur dans tes messages ?
 
Dernière édition:

Tirou

XLDnaute Occasionnel
Re : [VBA] Besoin d'aide pour la création d'une macro

Mmm, alors là, ça me dépasse ... que le pagesetup et le activewindow.view ne soient pas supportés, j'avoue que je ne sais pas comment te dépatouiller là ...

Mais ton excel supportait la macro générale? celle faite avec l'enregistreur au tout départ?

Pour le code en couleur, il faut remplacer la balise
Code:
 par [Code=VBA]

PS : tu es sous quelle version d'excel en fait ? il me semble que tu avais dit 2010, mais je ne sais plus
 
Dernière édition:

villette54

XLDnaute Junior
Re : [VBA] Besoin d'aide pour la création d'une macro

Oui, je suis sous Excel 2010.
(Mais sur un réseau d'entreprise, et honnêtement Excel plante pour un rien. Notamment en ce qui concerne de près ou de loin les impressions, Excel plante à la moindre occasion c'est pourquoi je ne suis pas vraiment surpris. Et lorsque j'appelle le service informatique, on me répond brillamment : ne fais plus ce que tu faisais avant que ça plante, et ça plantera plus)
C'est pourquoi je n’insiste pas trop sur cette macro, à mon avis tu ne pourras rien y faire. Je reprendrais lorsque l'on m'aura changé mon PC, prochainement en théorie...

Bref,
J'ai fais quelques petites macros tous seul. J'aimerais que tu y jettes un oeil pour me dire ce qui peut être améliorer si tu as encore un peu de temps à m'accorder ?
Notamment 3 points :
- Pourquoi l'enregistrement se met en défaut dans la macro "envoyer un mail"
- Est-il possible de faire en sorte que l'adresse du document soit un lien dans le mail
- Comment nommer son USF ?

Merci !

PS : Comme d'hab... http://cjoint.com/?3InoJAuVBZA
 

Tirou

XLDnaute Occasionnel
Re : [VBA] Besoin d'aide pour la création d'une macro

- Pourquoi l'enregistrement se met en défaut dans la macro "envoyer un mail"
- Est-il possible de faire en sorte que l'adresse du document soit un lien dans le mail
- Comment nommer son USF ?

Il va falloir que tu m'expliques un peu, je ne comprends pas les 2 premières.

Pou nommer l'userform, il faut que tu ailles dans l'onglet Affichage > Fenêtre des propriétés (ou F4). Là, quand tu as sélectionné ton userform dans ton projet VBA, tu peux y changer les propriétés que tu veux, en particulier le nom.
 

villette54

XLDnaute Junior
Re : [VBA] Besoin d'aide pour la création d'une macro

Salut Tirou,

Ok, je me suis pas très bien exprimé (voir même pas bien du tout)
Je récapitule :
- 1. L'enregistrement qui se met en défaut --> Problème réglé, c'était du à une faute de frappe (xslm au lieu de xlsm)
- 2. Est-il possible de faire en sorte que l'adresse du document soit un lien dans le mail --> Je parle de cette partie du code :
Code:
Corps = "Bonjour," & vbCrLf & "<br>" _
    & vbCrLf & "<br>" _
    & "En pièce jointe le RDP du " & [C12].Value & vbCrLf & "<br>" _
    & vbCrLf & "<br>" _
    & "Vous le trouverez également enregistré à l'adresse ci-dessous :" & vbCrLf & "<br>" _
    & "P:\RDP\Nouveaux RDP" & vbCrLf & "<br>" _ 'Ici je souhaiterais avoir un lien vers cette destination
    & vbCrLf & "<br>" _
    & "Bien à vous,"
Je souhaite donc qu'en cliquant sur la ligne "& "P:\RDP\Nouveaux RDP" & vbCrLf & "<br>" _", le dossier "Nouveaux RDP" s'ouvre.

3. Comment nommer son USF --> Même là je me suis mal exprimé je souhaite changer le titre de l'USF (le nom qui apparaît dans la première ligne en haut, celle où il y a la croix pour fermer) car actuellement quand je clique sur le bouton 'signaler un bug' l'USF qui s'ouvre porte comme nom Userform1 !
 

Tirou

XLDnaute Occasionnel
Re : [VBA] Besoin d'aide pour la création d'une macro

Point par point :
1 - Cela m'étonne que tu n'ai pas un bug avec la suite, lors de l'enregistrement de fichier.
En effet, tu indiques à Excel un vichier .xlsm mais tu lui dis après que c'est d'un autre type (FileFormat:=xlOpenXMLWorkbook)
Il vaudrait remplacer la ligne d'enregistrement par
Code:
ActiveWorkbook.SaveAs Filename:=pj, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
2 - J'ai trouvé une syntaxe en cherchant sur le forum, du type file://P:/RDP/Nouveaux RDP, mais je n'arrive pas à le faire fonctionner chez moi (il faut que je valide par Enter dans le corps de message ...) Je te tiens au courant si j'y arrive.

En attendant, essayes de remplacer la ligne par ça et vois ce que ça donne chez toi. (liens direct vers le fichier, je pense que c'est mieux)
Code:
 & "file://" & Replace(pj, "\", "/") & "<br>" _

3 - Il s'agit de la propriété "Caption" de l'objet UserForm1. On a en général le nom de l'objet, ce qui permet d'y faire référence, qui est différent du Caption, ce qui est affiché. (voir le message précédent pour savoir comment le modifier)
 
Dernière édition:

villette54

XLDnaute Junior
Re : [VBA] Besoin d'aide pour la création d'une macro

Effectivement, cela ne fonctionne pas non plus chez moi (besoin de cliquer à la suite du lien et d'appuyer sur entrée pour valider)
J'ai essayé la méthode conseillée par microsoft mais sans succès non plus : Ce lien n'existe plus

"Anchor" se met en défaut en permanence chez moi.

Pour le reste, tout est ok maintenant. Merci.
 

villette54

XLDnaute Junior
Re : [VBA] Besoin d'aide pour la création d'une macro

Salut.

Bon j'ai toujours pas réussi à mettre ce foutu lien. (Je vais faire appel à une société pour résoudre le problème)
J'ai encore un peu besoin de toi Tirou, si tu veux bien.

J'ai essayer de reprendre une partie de ton code (du fichier Suivi COTOPO) puisque c'est un peu le même principe. Mais ça donne rien de bon :D.
Je t'explique, je veux prouver à un collègue que certains fichier sont totalement inutile. Pour ça je souhaite mettre en place un "compteur de vues". Ne sachant pas trop comment m'y prendre j'ai décidé de mettre un USF à l'ouverture du fichier qui demande les initiales de la personne avant de pouvoir ouvrir le fichier.
J'aurais souhaité que ces infos s'implémentent automatiquement sur une page caché, afin que je puisse récupérer les résultats plus tard.
Je souhaiterais donc que dans la première colonne s'implémentent les initiales, et qu'à coté s'implémente la date et l'heure.

Merci d'avance.
 

Pièces jointes

  • test compteur.xlsm
    31.1 KB · Affichages: 90
  • test compteur.xlsm
    31.1 KB · Affichages: 96
  • test compteur.xlsm
    31.1 KB · Affichages: 92

Tirou

XLDnaute Occasionnel
Re : [VBA] Besoin d'aide pour la création d'une macro

Salut Villette,

Voilà pour ton compteur.
Je l'ai séparé en deux parties : celle que tu voulais lors du click utilisateur, l'autre à l'ouverture de l'userform (donc à l'ouverture du fichier)
Cela permet de quand même observer les ouvertures des petits malins qui fermeraient ton userform avec la petite croix. Le tout est sauvegardé automatiquement (à voir si c'est problématique pour tes fichiers)


Par contre, il faut bien que tu aies en tête ceci : ce ne sera pas une preuve en tant que tel que les fichiers ne sont pas utilisés : si l'utilisateur a désactivé les macros, tout ce que nous faisons ici n'aura aucun impact ....
 

Pièces jointes

  • Test compteur.xlsm
    34.7 KB · Affichages: 97
  • Test compteur.xlsm
    34.7 KB · Affichages: 101
  • Test compteur.xlsm
    34.7 KB · Affichages: 97

villette54

XLDnaute Junior
Re : [VBA] Besoin d'aide pour la création d'une macro

Salut Tirou,

Effectivement je n'avais pas pensé à tout ça...
D'autant plus que la plupart des fichiers sont simplement des fichiers où il suffit de jeter un coup d'oeil pour savoir la date du prochain camion, ou ce que le collègue de la pause d'avant à fait...
Et qu'en plus étant sur un réseau d'entreprise les macros sont désactivées par défaut sur tous les postes...

Je vais essayer de trouver une solution...

En tout cas merci, pour ton aide.
 

villette54

XLDnaute Junior
Re : [VBA] Besoin d'aide pour la création d'une macro

Re,

Au fait pour info. J'ai finalement réussi à faire un lien dans mon email.
L'une des syntaxes que j'ai utilisée était bonne, seulement elle ne gère pas les espaces... J'ai donc du faire sans.

Pour info, voici le morceau de code :
Code:
dim corps as string
Corps = "Bonjour," & vbCrLf & "<br>" _
 & vbCrLf & "<br>" _
 & "Ci-dessous le lien vers le RDP du " & Sheets(2).[C92].Value & " concernant la zone : " & Sheets(1).[C18].Value & vbCrLf & "<br>" _
 & vbCrLf & "<br>" _
 & "<HTML><BODY>" _
 & "<A href=P:\RDP\Nouveaux_RDP\>P:\RDP\Nouveaux_RDP\</A>" _
 & "</BODY></HTML>" _
 & vbCrLf & "<br>" _
 & "Bien à vous,"

On voit bien que j'ai du changer le nom du dossier "Nouveaux RDP" en "Nouveaux_RDP".

Tant que j'y pense. Il me reste encore un petit soucis sur ce fichier, j'ai besoin de faire apparaître une partie d'une autre feuille de données dans un USF ou une msgbox, mais le problème est assez flagrant on ne voit rien...
Je te laisse voir par toi même.. S'il te reste encore un peu de temps à m'accorder et que tu vois comment solutionner ça, je suis preneur.
 

Pièces jointes

  • Fichier Test.xlsm
    26 KB · Affichages: 88
  • Fichier Test.xlsm
    26 KB · Affichages: 90
  • Fichier Test.xlsm
    26 KB · Affichages: 87

Tirou

XLDnaute Occasionnel
Re : [VBA] Besoin d'aide pour la création d'une macro

Re,

Merci pour le bout de code pour le lien HTML.

Pour ton affichage d'image dans l'userform, je ne me vois pas rentrer dans le code VBA : il y a trop de commandes qui me sont totalement inconnues.

Je laisse donc tomber l'ajustement automatique (je le reprendrais si il n'y a pas le choix) et je te propose ceci :
Tu peux jouer avec les propriétés de l'userform, en particulier avec la propriété "zoom". Après avoir joué avec, tu repositionnes ton cadre d'image, et ça devrait être bon pour toi.
Je te propose en pj un fichier avec zoom à 70.
 

Pièces jointes

  • Copie de Fichier Test.xlsm
    26 KB · Affichages: 92

villette54

XLDnaute Junior
Re : [VBA] Besoin d'aide pour la création d'une macro

Salut Tirou,

Eh oui encore moi... x)
Une petite question, pourquoi est-ce que dans le code ci-dessous la première partie (avant le '----) fonctionne très bien.
Et que la seconde partie se met en défaut : "Application-Defined or Object-Defined Error"

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Worksheets(1).Unprotect Password:="123rdp"
If Not Intersect(Target, Range("F11")) Is Nothing Then
    If Cells(11, 6).Value = "Blessure avec arrêt" Then
        Cells(37, 1).Value = "Cause(s) de l'accident :"
    Else
    If Cells(11, 6).Value = "Blessure sans arrêt" Then
        Cells(37, 1).Value = "Cause(s) de l'accident :"
    Else
        Cells(37, 1).Value = "Cause(s) de l'incident :"
End If
End If
End If
'-------------------------------------------------

If Not Intersect(Target, Range("F11")) Is Nothing Then
    If Cells(11, 6).Value = "Blessure avec arrêt" Then
        Cells(41, 1).Value = "Conséquence(s) de l'accident :"
    Else
    If Cells(11, 6).Value = "Blessure sans arrêt" Then
        Cells(41, 1).Value = "Conséquence(s) de l'accident :"
    Else 'la ligne juste en dessous se met en défaut
        Cells(41, 1).Value = "Conséquence(s) de l'incident :"
End If
End If
End If
Worksheets(1).Protect Password:="123rdp"
End Sub

Merci d'avance pour ton aide.

Edit : J'ai aussi essayé en simplifiant un peu le code :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Worksheets(1).Unprotect Password:="123rdp"
If Not Intersect(Target, Range("F11")) Is Nothing Then
    If Cells(11, 6).Value = "Blessure avec arrêt" Then
        Cells(37, 1).Value = "Cause(s) de l'accident :"
        Cells(41, 1).Value = "Conséquence(s) de l'accident :"
    Else
    If Cells(11, 6).Value = "Blessure sans arrêt" Then
        Cells(37, 1).Value = "Cause(s) de l'accident :"
        Cells(41, 1).Value = "Conséquence(s) de l'accident :"
    Else
        Cells(37, 1).Value = "Cause(s) de l'incident :"
        Cells(41, 1).Value = "Conséquence(s) de l'incident :"
End If
End If
End If
Worksheets(1).Protect Password:="123rdp"
End Sub

Mais la même ligne se met toujours en défaut (la dernière) --> Cells(41, 1).Value = "Conséquence(s) de l'incident :"

Editbis : Quand je fais un debug étape par étape avec F8, toute la procédure se passe sans encombre. Mais après le End Sub, le débugger remonte et me remet cette ligne en défaut... Je pige pas là.
 
Dernière édition:

Discussions similaires

Réponses
13
Affichages
261

Statistiques des forums

Discussions
311 740
Messages
2 082 047
Membres
101 880
dernier inscrit
Anton_2024