dispatcher données de BDD sur classeur et onglet

wifi7768

XLDnaute Nouveau
Bonjour,

Je suis nouveau sur le forum et débutant en excel...
J'ai une BDD alimentée par un USF. Cette BDD comporte 8 colonnes, avec la première colonne "procéssus" et la 2eme colonne "sous-processus".
Je souhaiterais pouvoir apres avoir renseigné mon USF pour alimenter ma BDD, que les 2 premières colonnes soient riées dans un classeur X existant (en fonction du nom (4 possibilités) de la cellule de la 1ere colonne "processus" ) et dans un onglet existant, dans ce fameux classeur X , fonction du nom des cellules de la 2eme colonne (sous processus).
Merci de votre aide.

Je joins le code du formulaire pour remplir la BDD.
Le fichier excel est trop lourd pour être posté :(
Code:
Private Sub ajout_donnes_Click()

    
    Worksheets("donnees").Visible = True 'afficher la feuille "donnees"
    Worksheets("interface").Visible = False 'afficher la feuille "interface"
    Worksheets("documents").Visible = False 'masquer la feuille "document""
 
    Unload Me 'Fermer la boite de dialogue
    ajoutdon.Show 'afficher la boite de dialogue "ajoutdon"
    
End Sub

Private Sub ajouter_doc_Click()


 Worksheets("documents").Unprotect ("a") 'verrouiller la feuille "documents"


'on vérifie si la zone de texte n'est pas vide
    If titre.Text = "" And Not (combo_domaine = "") Then
        MsgBox ("Entrer le nom du document")
        Exit Sub
    End If
    
    
    If combo_domaine.Text = "" And Not (titre = "") Then
        MsgBox ("Entrer le domaine du document")
        Exit Sub
    End If

    If combo_domaine.Text = "" And titre.Text = "" Then
        MsgBox ("Entrer le domaine et le titre du document")
        Exit Sub
    End If



'On vérifie si le domaine n'existe pas

For i = 1 To (Worksheets("documents").Cells(1, 1))
If titre = Worksheets("documents").Cells(i, 4) Then
     MsgBox ("ce documents existe déjà")
        Exit Sub
    End If

Next



' recherche de la ligne vide
    ligne = 2
    Do While Cells(ligne, 4).Text <> ""
        ligne = ligne + 1
    Loop
      Cells(ligne, 2) = combo_domaine 'ajout du nom du domaine
      Cells(ligne, 3) = combo_SD 'ajout du nom du sous-domaine
      Cells(ligne, 4) = titre 'ajout du nom du document
      Cells(ligne, 5) = auteur1 'ajout du nom de l'auteur
      Cells(ligne, 6) = auteur2 'ajout du nom de l'auteur2
      Cells(ligne, 7) = ncbox4 'ajout de la date
      Cells(ligne, 8) = TextBox1 'ajout de la date
      Cells(ligne, 9) = biblio 'ajout de la bibliographie
      Cells(ligne, 10) = ncBox5 'ajout de la date revision
      
      Worksheets("documents").Rows(ligne).Select
      Selection.EntireRow.Hidden = False
      
    Worksheets("documents").Protect ("a") 'verrouiller la feuille "documents"

MsgBox ("le nouveau document a bien été ajouté à la liste")

'Vider les zone de saisie
combo_domaine = ""
combo_SD = ""
titre = ""
auteur1 = ""
auteur2 = ""

End Sub
Private Sub annuler_Click() 'retourner à l'acceuil de la base de données
    
    Worksheets("donnees").Visible = False 'masquer la feuille "donnees"
    Worksheets("interface").Visible = True 'afficher la feuille "interface"
    Worksheets("documents").Visible = False 'masquer la feuille "document""
    Unload Me 'Fermer la boite de dialogue
    
End Sub

Private Sub auteur1_Change()

End Sub

Private Sub auteur2_Change()

End Sub

Private Sub combo_domaine_Change()
If combo_domaine.Value = "" Then
        combo_SD.RowSource = ""
        combo_SD.Value = ""
    Else
        Select Case combo_domaine.ListIndex
            Case 0
                combo_SD.RowSource = "Liste!B1:B6"
            Case 1
                combo_SD.RowSource = "Liste!C1:C6"
            Case 2
                combo_SD.RowSource = "Liste!D1:D10"
            Case 3
                combo_SD.RowSource = "Liste!E1:E7"
        End Select
    End If
End Sub


Private Sub combo_SD_Change()

End Sub

Private Sub Label6_Click()

End Sub

Private Sub Label8_Click()

End Sub

Private Sub Label9_Click()

End Sub

'Afficher date d'enregistrement dans formulaire
Sub Affich_date()
ncbox4.Value = Format(DateSerial(spban.Value, spbmois.Value, spbjour.Value), "dd/mm/yyyy")
End Sub


Private Sub ncbox4_Change()

End Sub

Private Sub spban_Change()
    Affich_date
End Sub
Private Sub spbjour_Change()
    If spbjour.Value = 0 Then
        spbjour.Value = 31
    ElseIf spbjour.Value = 32 Then
        spbjour.Value = 1
    End If
    Affich_date
End Sub

Private Sub spbmois_Change()
    If spbmois.Value = 0 Then
        spbmois.Value = 12
    ElseIf spbmois.Value = 13 Then
        spbmois.Value = 1
    End If
    Affich_date
End Sub
'Afficher date d'enregistrement dans formulaire
Sub Affich_date1()
ncBox5.Value = Format(DateSerial(spban1.Value, spbmois1.Value, spbjour1.Value), "dd/mm/yyyy")
End Sub


Private Sub ncbox5_Change()

End Sub

Private Sub spban1_Change()
    Affich_date1
End Sub
Private Sub spbjour1_Change()
    If spbjour1.Value = 0 Then
        spbjour1.Value = 31
    ElseIf spbjour1.Value = 32 Then
        spbjour1.Value = 1
    End If
    Affich_date1
End Sub

Private Sub spbmois1_Change()
    If spbmois1.Value = 0 Then
        spbmois1.Value = 12
    ElseIf spbmois1.Value = 13 Then
        spbmois1.Value = 1
    End If
    Affich_date1
End Sub
Private Sub TextBox1_Change()

End Sub

Private Sub titre_Change()

End Sub

Private Sub UserForm_Activate()

    For i = 2 To (Worksheets("donnees").Cells(2, 1) + 1) 'remplir la combobox domaine
        combo_domaine.AddItem Worksheets("donnees").Cells(i, 2)
    Next
    
    For i = 2 To (Worksheets("donnees").Cells(2, 4) + 1) 'remplir la combobox sous-domaine
        combo_SD.AddItem Worksheets("donnees").Cells(i, 5)
    Next

    For i = 2 To (Worksheets("donnees").Cells(2, 7) + 1) 'remplir les comboboxs auteur
        auteur1.AddItem Worksheets("donnees").Cells(i, 8)
        auteur2.AddItem Worksheets("donnees").Cells(i, 8)
    Next
    
    
    
biblio.AddItem "VERSION" 'ajouter la valeur "X" à la liste de choix

End Sub

A bientôt.
 

wifi7768

XLDnaute Nouveau
Re : dispatcher données de BDD sur classeur et onglet

Re,

Je cherche toujours pour décaler la saisie des données d'une colonne ? Au lieu que l'on commence en colonne A, j'aimerais que cela commence en colonne B (notamment pour la feuille "documents" ) ?

Les données doivent être incrémentées dans le tableau dans un certain ordre.
(que processus aille bien dans la colonne A, que sous processus dans B, la date en colonne C, etc..etc..)
Pourriez-vous m'indiquer comment procéder ?

Merci +++
 
Dernière édition:

wifi7768

XLDnaute Nouveau
Re : dispatcher données de BDD sur classeur et onglet

Re,

Merci pour l'envoi.

Ce fichier ne comporte plus ton dernier code VBA que tu avais posté, afin de dispatcher les données ?
C'est bien ça ?
En fait je voudrais continuer à dispatcher les données saisies dans la feuille "documents" mais en m'assurant d'un certain ordre des données dans chaque ligne .

Merci pour ton aide.
 

ChTi160

XLDnaute Barbatruc
Re : dispatcher données de BDD sur classeur et onglet

Re

oui
je ne savais plus trop a partir de quel fichier travailler
Ci dessous le fichier qui (pour le test) enregistre les données dans le fichier Management le fichier Joint doit se trouvé dans le même dossier que les Fichiers Cible (ex Management)
Le Fichier : Regarde la pièce jointe Classeur1 test.xls
j'aurai surement besoin d'explications Lol
Bonne Journée
Amicalement
 

Pièces jointes

  • Classeur1 test.xls
    78 KB · Affichages: 68
  • Classeur1 test.xls
    78 KB · Affichages: 73

wifi7768

XLDnaute Nouveau
Re : dispatcher données de BDD sur classeur et onglet

Merci Chti160.
C'est bien cela.
Cela fonctionne.

J'aurais aimé que la copie des données commence à partir de la colonne B et non de la colonne A (je dois laisser la colonne A vide).

Et je voudrais ordonner mes données dans le tableau : chaque ligne dans cet ordre Processus/sous/processus/titre/rédacteur/approbateur/date création/type document/version/date de révision.

Merci encore de ta collaboration.
 

ChTi160

XLDnaute Barbatruc
Re : dispatcher données de BDD sur classeur et onglet

Re
Que veux tu dire par ordonner (Trier ) avec l'ordre que tu indiques ?????
Merci je modifie pour ta demande de Colonne De Début de report (B) dans quel Cas ? Le fichier Cible et la feuille Documents
Amicalement
Jean Marie
 

ChTi160

XLDnaute Barbatruc
Re : dispatcher données de BDD sur classeur et onglet

Re
Pour ce qui est de décaler la colonne de recopie
Si c'est dans le Fichier Classeur1 Test feuille documents
changer Le 1 en 2 dans .Cells(dligne, 1)
VB:
.Cells(dligne, 2).Resize(1, UBound(Tab_Recup, 1) + 1) = Tab_Recup 'on colle les données du tableau dans la feuille "documents"
Si c'est dans le Fichier MANAGEMENT feuille Ex : Direction
changer Le 1 en 2 dans .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row + 1, 1)
VB:
.Cells(.Cells(.Rows.Count, 1).End(xlUp).Row + 1, 2).Resize(1, UBound(Tab_Recup, 1) + 1) = Tab_Recup 'on colle les données du tableau
Voir si cela te convient
Bonne journée
Amicalement
Jean Marie
 

wifi7768

XLDnaute Nouveau
Re : dispatcher données de BDD sur classeur et onglet

Bonsoir à Tous,

Bonsoir Chti160

Parfait pour le code pour décaler les colonnes..cela fonctionne!! MERCI +++

Pour l'ordre je voudrais que les données saisies appariassent sur chaque ligne copiée (dans "documents" et les autres feuilles) de cette façon :

ColonneB ColonneC ColonneD ColonneE ColonneF ColonneG ColonneI ColonneJ ColonneK
Processus Ss-Processus Titre redacteur approbateur Date1 Type doc version Date2

Merci d'avance
 

wifi7768

XLDnaute Nouveau
Re : dispatcher données de BDD sur classeur et onglet

Bonjour à Tous,

Bonjour Chti160

Merci de ta réponse.

Concernant la 2eme date dans le tableau (date de révision), je voudrais :
1/Si supérieur à la date d'aujourd'hui fond rouge pour la cellule
3/Si inférieure à +60 jours de la date d'aujourdhui fond vert pour la cellule
4/Si cellule vide fond blanc
5/Si inférieure entre 60 et 1 jour de la date d'aujourd'hui fond orange.

Est ce que cela peut-etre géré par une mise en forme conditionnelle des cellules en selectionnant la colonne adéquate ? ou est-il preferable de passer par une macro ? compte tenu du fichier ?

Merci encore de ta collaboration.

Bonne journée.
 

ChTi160

XLDnaute Barbatruc
Re : dispatcher données de BDD sur classeur et onglet

Bonjour wifi7768
Bonjour le Fil
Bonjour le Forum

pour ce qui est de la mise en forme,
1° a quel endroit ? , dans les deux feuilles Fichier Source (documents) et Fichier Cible (Management) ?
Tu veux que les couleurs se mettent a jour en fonction de la date du Jour , cela pour l'ensemble des Données de la feuille ?
dans l'attente
Amicalement
Jean Marie
 

wifi7768

XLDnaute Nouveau
Re : dispatcher données de BDD sur classeur et onglet

Bonjour Chti160

Oui dans les feuilles Fichier Source (documents) et Fichiers Cible (Management et autres) , cela serait parfait si c'est possible.
Et si les couleurs peuvent se mettent a jour en fonction de la date du Jour , pour l'ensemble des Données de la feuille cela correspondrait tout à fait.

Merci encore.

Amicalement
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16