Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Remplissage automatique d'une feuille à l'autre

Todre

XLDnaute Occasionnel
Bonjour à tous,

Je possède un fichier Excel pour le suivi de mes véhicules. J'ai une feuille qui me sert d'ordre d'exécution que je dois donner à mon conducteur pour pouvoir aller au garage avec qui servira plus tard pour la facturation avec mes gestionnaires de flotte.
En parallèle, j'ai créer une feuille pour avoir un suivi perso de mes véhicules à l'année.
J'aimerai, lorsque je rempli ma feuille perso, que certaines infos (2 voir 3) viennent remplir la feuille 1 (l'ordre d'exécution). Lorsque je remplis une nouvelle ligne cela remplis de nouveau la feuille avec les nouvelles informations ainsi de suite comme ca je suis capable de sortir à tt moment un historique Excel de mes véhicules.
En prime, si je peux avoir un bouton "envoyer par mail en pdf" et "imprimer" ce serait top de chez top.
Pour info la feuille ordre d'exécution (feuille 1) va déjà chercher des infos dans des feuilles masquées suivant ma saisie.

Pouvez vous me dire si cela est possible ? Je ne peux pas mettre en partage le fichier, il contient beaucoup d'informations RGPD.

D'avance merci à vous pour votre aide
 
Solution
Je te propose ce code qui remplace en totalité l'ancien code
La partie verte se met à jour dès que tu cliques sur le bouton bleu "MAJ info" et que tu sois n’importe où !

VB:
Sub Info()
Application.ScreenUpdating = False
Dim Ws1 As Worksheet, Ws2 As Worksheet
Dim Lig&, Col&, i&, Derlig&

Lig = ActiveCell.Row
Col = ActiveCell.Column

Set Ws1 = Worksheets("BON DE COMMANDE") 'Destination
Set Ws2 = Worksheets("Suivi véhicules") 'Source

Derlig = Ws2.Range("A" & Rows.Count).End(xlUp).Row
For i = 6 To Derlig
    If Ws2.Range("I" & i) <> "" Then
        ' Tu choisis parmi les 4 couleurs vertes celle que tu veux
        Ws2.Range("A" & i & ":L" & i).Interior.ColorIndex = 4 '<== 4 ou 10 ou 43 ou 50
    Else
        Ws2.Range("A" & i & ":L" &...

Gégé-45550

XLDnaute Accro
Pouvez vous me dire si cela est possible ?
Bonjour,
La réponse est "oui" , indiscutablement … mais sans fichier, personne ne pourra proposer quoi que ce soit.
Si vous souhaitez une réponse efficace, vous devrez forcément donner un minimum d'information sur votre fichier et sa structure.
À défaut, je crains pour vous qu'il n'y ait aucune réponse à attendre.
Cordialement,
 

Phil69970

XLDnaute Barbatruc
Bonjour @Todre

Edit : Bonjour @Gégé-45550

Pouvez vous me dire si cela est possible ?
A l'aveugle et au pif surement.

Je ne peux pas mettre en partage le fichier, il contient beaucoup d'informations RGPD.
A toi de faire le ménage et de nous faire un fichier représentatif

C'est quoi représentatif ?

- représentatif, même organisation des lignes et des colonnes, mêmes libellés, mêmes noms de feuilles...
- anonymisé, pas de données personnelles réelles tels nom, n° sécu, adresse ... remplacé par Nom1, Nom2 etc ....
- simplifié, une quinzaine de lignes reproduisant l'ensemble des différents cas envisageables (Avec le résultat souhaité éventuellement)

Si cela fonctionne sur le fichier fourni et pas sur le vrai fichier c'est qu'il n'est en rien représentatif ou que tu n'as pas su transposer ce qui devrait être un simple copier coller du code.

Mais sans fichier peu de chance d'avoir une aide constructive..
Faire un fichier à l'aveugle a peu de chance de fonctionner et de correspondre à ce que tu veux.

En clair pas de bras pas de chocolat !
 

gbinforme

XLDnaute Impliqué
Pouvez vous me dire si cela est possible ? Je ne peux pas mettre en partage le fichier, il contient beaucoup d'informations RGPD.
Bonsoir,
Sans connaitre réellement le fichier, il faut naviguer à la boule de cristal mais je peux te dire sans trop de risques que beaucoup de choses sont possibles sur excel et que tu devrais pouvoir réaliser ton choix.
Si tu souhaites une aide plus précise il faudrait fournir un classeur totalement ananimisé pour permettre la codification souhaitée.
 

Phil69970

XLDnaute Barbatruc
@Todre

Tout en image :

1) Tu cliques sur Developpeur


2) Tu cliques sur Insertion ==> Module



3) Tu copies ce code :

VB:
Sub Info()
Application.ScreenUpdating = False
Dim Ws1 As Worksheet, Ws2 As Worksheet
Dim Derlig%

Set Ws1 = Worksheets("BON DE COMMANDE") 'Source
Set Ws2 = Worksheets("Suivi véhicules") 'Destination
With Ws2
    Derlig = .Range("A" & Rows.Count).End(xlUp).Row + 1
    .Range("A" & Derlig) = Date                 'Date du jour
    .Range("B" & Derlig) = Ws1.Range("B7")      'Immat
    .Range("E" & Derlig) = Ws1.Range("B20")     'Motif
    .Range("F" & Derlig) = Ws1.Range("B30")     'Date depose
End With
Set Ws1 = Nothing: Set Ws2 = Nothing
End Sub

Sub RAZ()
Application.ScreenUpdating = False
Dim Ws1 As Worksheet

Set Ws1 = Worksheets("BON DE COMMANDE") 'Source
With Ws1
    .Range("B7") = ""    'Immat
    .Range("B20") = ""   'Motif
    .Range("B30") = ""   'Date depose
End With
Set Ws1 = Nothing
End Sub

Sub Impression()
Application.ScreenUpdating = False
Dim Ws2 As Worksheet

Set Ws2 = Worksheets("Suivi véhicules") 'Destination
With Ws2.PageSetup
    Derlig = Range("A" & Rows.Count).End(xlUp).Row
    .PrintArea = "$A$1:$L$" & Derlig    'Zone d'impression
    .FitToPagesWide = 1                 'Contrôle la largeur de la page
End With
Sheets(Ws2.Name).PrintOut               'Imprime la feuille
Set Ws2 = Nothing
End Sub

Sub ExportPDF()
Dim Chemin As String
Dim NFichier As String

'La ou se trouve ton fichier excel
Chemin = ActiveWorkbook.Path & "\"

NFichier = Range("A1").Value & ".pdf"

If NFichier = "" Then Exit Sub
If Dir(Chemin & NFichier) <> "" Then
    'le fichier existe déjà et suivant réponse de l'utilisateur
    If MsgBox("Le fichier existe déjà, voulez-vous le remplacer ?", vbYesNo + vbExclamation, "Confirmation") = vbYes Then
        'Création du fichier PDF
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        Chemin & NFichier, Quality:=xlQualityStandard, IncludeDocProperties:=True
        MsgBox "Le fichier a été enregitré." & vbCrLf & vbCrLf & "Ici ==> " & Chemin & vbCrLf & vbCrLf & _
        "Sous le nom : " & NFichier, 48, "Enregistrement fichier en PDF ..."
    Else
        MsgBox "Le PDF n'a pas été crée", vbCritical, "Le fichier existe déjà"
        Exit Sub
    End If
Else    'créer le pdf
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    Chemin & NFichier, Quality:=xlQualityStandard, IncludeDocProperties:=True
    MsgBox "Le fichier a été enregitré." & vbCrLf & vbCrLf & "Ici ==> " & Chemin & vbCrLf & vbCrLf & _
        "Sous le nom : " & NFichier, 48, "Enregistrement fichier en PDF ..."
End If
End Sub

Et tes 4 boutons devraient fonctionner
J'ai commenté tout le code pour que tu puisses le comprendre
 

Todre

XLDnaute Occasionnel
Hello,

En fait quand tu rempli la feuille "suivi des véhicules" il faut que les infos des cases en orange se déversent dans le bon de commande (immat', motif et date de dépose). Ensuite lorsque je clique sur PDF ou Impression, cela imprime directement le Bon de commande complété. Là il m'a imprimé le suivi des véhicules sinon c'est pas mal, top
 

Phil69970

XLDnaute Barbatruc
@Todre

J'ai tout remis dans le bon ordre voici la version V2

Edit code mofifié à 13h30
Pour selectionner un véhicule il faut cliquer avec la souris sur l'immatriculation que tu as choisi puis faire Mis à jour info



VB:
Option Explicit

Sub Info()
Application.ScreenUpdating = False
Dim Ws1 As Worksheet, Ws2 As Worksheet
Dim Derlig%
Dim Lig&, Col&

Lig = ActiveCell.Row
Col = ActiveCell.Column

If Col = 2 And Lig > 5 And ActiveCell.Value <> "" Then
    Set Ws1 = Worksheets("BON DE COMMANDE") 'Destination
    Set Ws2 = Worksheets("Suivi véhicules") 'Source
    With Ws2
        Derlig = .Range("A" & Rows.Count).End(xlUp).Row
        Ws1.Range("B7") = .Range("B" & Lig)
        Ws1.Range("B20") = .Range("E" & Lig)
        Ws1.Range("B30") = .Range("F" & Lig)
    End With
Else
    MsgBox "Pas de véhicule choisi !", vbExclamation, "Essaye encore !"
End If

Set Ws1 = Nothing: Set Ws2 = Nothing
End Sub

Sub RAZ() 'Pas sur qu cela soit utile maintenant
Application.ScreenUpdating = False
Dim Ws1 As Worksheet

Set Ws1 = Worksheets("BON DE COMMANDE") 'Source
With Ws1
    .Range("B7") = ""    'Immat
    .Range("B20") = ""   'Motif
    .Range("B30") = ""   'Date depose
End With
Set Ws1 = Nothing
End Sub

Sub Impression()
Application.ScreenUpdating = False
Dim Ws1 As Worksheet, Derlig%

Set Ws1 = Worksheets("BON DE COMMANDE") 'Destination
With Ws1.PageSetup
    Derlig = Range("A" & Rows.Count).End(xlUp).Row
    .PrintArea = "$A$2:$E$53"           'Zone d'impression
    .FitToPagesWide = 1                 'Contrôle la largeur de la page
End With
Sheets(Ws1.Name).PrintOut               'Imprime la feuille
Set Ws1 = Nothing
End Sub

Sub ExportPDF()
Dim Chemin$, NFichier$, Ws1 As Worksheet

Set Ws1 = Worksheets("BON DE COMMANDE") 'Destination

'La ou se trouve ton fichier excel
Chemin = ActiveWorkbook.Path & "\"

If Ws1.Range("B7").Value = "" Then
    MsgBox "C'est quoi ce binzzzz !... Il n'y a pas d'immatriculation", vbCritical, "Tu fais n'importe quoi !"
    Exit Sub
End If
NFichier = Ws1.Range("B7").Value & ".pdf"

If Dir(Chemin & NFichier) <> "" Then
    'le fichier existe déjà et suivant réponse de l'utilisateur
    If MsgBox("Le fichier existe déjà, voulez-vous le remplacer ?", vbYesNo + vbExclamation, "Confirmation") = vbYes Then
        'Création du fichier PDF
        Ws1.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        Chemin & NFichier, Quality:=xlQualityStandard, IncludeDocProperties:=True
        MsgBox "Le fichier a été enregitré." & vbCrLf & vbCrLf & "Ici ==> " & Chemin & vbCrLf & vbCrLf & _
        "Sous le nom : " & NFichier, 48, "Enregistrement fichier en PDF ..."
    Else
        MsgBox "Le PDF n'a pas été crée", vbCritical, "Le fichier existe déjà"
        Exit Sub
    End If
Else    'créer le pdf
    Ws1.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    Chemin & NFichier, Quality:=xlQualityStandard, IncludeDocProperties:=True
    MsgBox "Le fichier a été enregitré." & vbCrLf & vbCrLf & "Ici ==> " & Chemin & vbCrLf & vbCrLf & _
        "Sous le nom : " & NFichier, 48, "Enregistrement fichier en PDF ..."
End If
End Sub

Merci de ton retour
 

Pièces jointes

  • Suivi vehicule V2.xlsm
    53.9 KB · Affichages: 12
Dernière édition:

Todre

XLDnaute Occasionnel
Hello Phil

C'est + que bien nickel juste un bug quand je clic sur PDF (voir PJ) sinon c'est impeccable. Pas de relation avec la couleur orange ? je peux l'enlever par la suite ?

Merci à toi pour le boulot rapide
 

Pièces jointes

  • Capture d'écran 2023-12-20 140350.png
    47.5 KB · Affichages: 7

Phil69970

XLDnaute Barbatruc
Re

1) As tu bien enregistré le fichier sur ton disque dur ==> Pas sur le réseau car cela ne fonctionnera pas !!!

Normalement si il n'y a pas d'immatriculation dans la feuille "Bon de commande" tu dois avoir ce message



Et si tu as déjà un fichier PDF avec la même immatriculation tu dois avoir ce message


Ensuite si tu réponds Non tu as ce message



Et si tu réponds Oui tu as un message avec le nom et l'emplacement du fichier PDF

Tu peux enlever les couleurs que tu veux
 

Todre

XLDnaute Occasionnel
hello,

Excellent

Je risque d'avoir souvent les mêmes immat' qui reviennent, si je ne suis pas sur la même ligne je n'aurais pas le pb ?

Le fichier est bien sur mon bureau de pc

Pour moi tt fonctionne sauf le pdf ou j'ai le message d'erreur
 

Phil69970

XLDnaute Barbatruc
Re

Je risque d'avoir souvent les mêmes immat' qui reviennent, si je ne suis pas sur la même ligne je n'aurais pas le pb ?
Effectivement c'est souvent les même voitures qui posent problème
Je te propose que le PDF est le nom suivant :
==> Immatriculation de la voiture + Année + mois + jour
Ce qui donne :
==> AA-123-AA-2023-12-20
En bleu c'est l'immatriculation et en rouge c'est la date dans mon exemple (Bien sur sans les couleurs)

Pour la date on peut prendre au choix soit la date de dépose de la colonne F soit la date de la colonne A

Cela te permet de faire des tri sur l'immatriculation et ensuite la date pour une même voiture
Le piège si la même voiture va 2 fois au garage dans la même journée !!! mais cela est hyper rare en principe ......

J'attends ton retour concernant la date.....
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…