Microsoft 365 programme VBA pour "importer" les valeurs de certaines cellules d'une autre feuille appartenant à une ligne que j'identifie par un n°

arnomorize

XLDnaute Nouveau
Je sais, c'est un titre un peu long mais je n'arrive pas à synthétiser davantage...

Dans une feuille (formulaire nouvel objet), j'ai créé un formulaire qui va alimenter automatiquement un tableau d'une autre feuille (saison), en insérant une ligne, la remplissant des valeurs du formulaire, et la faisant débuter par un n° de ligne qui s'incrémente à chaque nouvelle ligne créée.
Ainsi, chaque nouvelle entrée est précédée par un n°

J'ai créé un autre formulaire dans une autre feuille (formulaire nouvelle dpae) pour traiter certaines informations du tableau

Pouvez vous m'aider à atteindre cet objectif :
Je voudrais saisir un n° dans une cellule "d'appel" de ce nouveau formulaire, afin de faire remonter certaines des valeurs de la ligne correspondante dans le nouveau formulaire.

Sachant qu'à chaque nouvelle entrée, les lignes se déplacent vers le bas, elles perdent donc leur position physique dans le tableau.

Je vous remercie de votre aide :)
 

Pièces jointes

  • essai arno.xlsm
    106.3 KB · Affichages: 8
Solution
pour vider le formulaire (et remettre les cases à cocher à false)

VB:
Sub CreationNouveauFormulaireEtInsereLesInfosDansSaisons2()
Dim NomFeuille As String
Dim WsSource As Worksheet
Dim ind As Integer

'copier le formulaire dans une nouvelle feuille et la nommer par le nom de l'objet
    NomFeuille = ActiveSheet.Range("C5").Value
    If FeuilleExiste(NomFeuille) Then
        MsgBox "Cette Feuille existe déjà"
        Exit Sub
    End If
    Sheets("FormulaireNouvelObjet").Copy After:=Sheets(Sheets.Count)
    With ActiveSheet
        .Name = NomFeuille
        .Shapes("Bouton 1").Delete
    End With
    

    Set WsSource = ActiveSheet
    foyer = ActiveSheet.CheckBox1.Value
    amphi = ActiveSheet.CheckBox2.Value
    stex =...

vgendron

XLDnaute Barbatruc
Hello

pour le bouton "Maison", il suffit de le mettre dans le formulaire==> il sera recopié automatiquement

pour le nom avec la date, il suffit de l'ajouter dans le NomFile

VB:
Sub SaveDPAE()
Dim Chemin As String

Chemin = "\\mairie-talant.lan\partages\donnees\LECRIN\Dossiers PARTAGES\INTERMITTENTS ET LOCATIONS\EMBAUCHE INTERMITTENTS" 'à modifier
Set WsSource = ActiveSheet

    With WsSource 'avec la feuille source
        NomFile = Format(Now, "dd_mm_yyyy") & "_" & Left(.Range("D5"), 15) & "_DPAE" 'on récupère le nom et on ajoute _DPAE pour faire le nom de fichier
        .Copy after:=Sheets(Sheets.Count) 'on copie la feuille dans le classeur
        With ActiveSheet
            .Name = NomFile 'on renomme la feuille
            .Range("B5:F5") = .Range("B5:F5").Value ' on remplace les formules par leur résultat
            .Range("D9:K17") = .Range("D9:K17").Value
            .Shapes("Bouton 1").Delete 'on supprime le bouton
            .Copy 'on copie la feuille dans un nouveau classeur
        End With
        
        ChDir Chemin
        ActiveWorkbook.SaveAs Filename:=Chemin & "\" & NomFile & ".xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False 'on enregistre le nouveau classeur
        ActiveWindow.Close 'on le ferme
        Application.DisplayAlerts = False 'on désactive les alarmes
        ActiveWorkbook.Sheets(NomFile).Delete 'on supprime la feuille _DPAE (si tu souhaites la garder dans le classeur d'origine, tu mets la ligne en commentaire)
        Application.DisplayAlerts = True
    End With
End Sub

attention.. le nom de l'onglet ne peut pas excéder 31 caractères..
NomFile = Format(Now, "dd_mm_yyyy") & "_" & Left(.Range("D5"), 15) & "_DPAE"
avec les préfixes "date et suffixe _DPAE, il reste 15 caractères pour le nom

pour le dernier point.. la feuille budget est écrasée à chaque nouvelle DPAE?
 

arnomorize

XLDnaute Nouveau
Hello

pour le bouton "Maison", il suffit de le mettre dans le formulaire==> il sera recopié automatiquement

pour le nom avec la date, il suffit de l'ajouter dans le NomFile

VB:
Sub SaveDPAE()
Dim Chemin As String

Chemin = "\\mairie-talant.lan\partages\donnees\LECRIN\Dossiers PARTAGES\INTERMITTENTS ET LOCATIONS\EMBAUCHE INTERMITTENTS" 'à modifier
Set WsSource = ActiveSheet

    With WsSource 'avec la feuille source
        NomFile = Format(Now, "dd_mm_yyyy") & "_" & Left(.Range("D5"), 15) & "_DPAE" 'on récupère le nom et on ajoute _DPAE pour faire le nom de fichier
        .Copy after:=Sheets(Sheets.Count) 'on copie la feuille dans le classeur
        With ActiveSheet
            .Name = NomFile 'on renomme la feuille
            .Range("B5:F5") = .Range("B5:F5").Value ' on remplace les formules par leur résultat
            .Range("D9:K17") = .Range("D9:K17").Value
            .Shapes("Bouton 1").Delete 'on supprime le bouton
            .Copy 'on copie la feuille dans un nouveau classeur
        End With
       
        ChDir Chemin
        ActiveWorkbook.SaveAs Filename:=Chemin & "\" & NomFile & ".xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False 'on enregistre le nouveau classeur
        ActiveWindow.Close 'on le ferme
        Application.DisplayAlerts = False 'on désactive les alarmes
        ActiveWorkbook.Sheets(NomFile).Delete 'on supprime la feuille _DPAE (si tu souhaites la garder dans le classeur d'origine, tu mets la ligne en commentaire)
        Application.DisplayAlerts = True
    End With
End Sub

attention.. le nom de l'onglet ne peut pas excéder 31 caractères..
NomFile = Format(Now, "dd_mm_yyyy") & "_" & Left(.Range("D5"), 15) & "_DPAE"
avec les préfixes "date et suffixe _DPAE, il reste 15 caractères pour le nom

pour le dernier point.. la feuille budget est écrasée à chaque nouvelle DPAE?
Mince, je n'ai pas été clair, ce n'est pas la date d'aujourd'hui que je veux ajouter au nom de fichier, c'est la date de l'objet (cellule F5 de la feuille FormulaireNouvelleDpae) :)
Concernant la feuille budget, ton tableau fera le boulot à la place des miens et j'ajoute en dernière colonne le budget restant à chaque ligne.
 

Pièces jointes

  • Gestion Ecrin 2025.xlsm
    241 KB · Affichages: 0

vgendron

XLDnaute Barbatruc
il faut renommer la table de la feuille DPAE
en t_DPAE (puisque c'est le nom utilisé dans le code

un peu de lecture ici pour comprendre
 

Discussions similaires

Statistiques des forums

Discussions
315 062
Messages
2 115 849
Membres
112 595
dernier inscrit
Jav33