Rapport de message :*
 

Re: Pb base de données/formulaires

Titre du sujet : Re: Pb base de données/formulaires
par myDearFriend! le 23/05/2012 00:22:50

Bonsoir tube, Mytå, Mth,

Tout d'abord, 2 remarques si tu veux bien :
  1. ton nouvel envoi avec des cellules vides n'apporte pas plus d'éclaircissement que l'envoi précédent avec des "xxx" ou "yyy" (épurer des données confidentielles dans un tableau sans pour autant le rendre vide de tout sens , ce n'est quand même pas le bout du monde...)
  2. si on observe tes 2 envois, on peut se demander notamment pourquoi les totaux du 2ème onglet passent soudainement de la colonne H à la colonne J et que ce nombre de totaux passe de 6 à 2 !

Bon, comme je n'ai pas vraiment envie de jouer aux devinettes plus longtemps encore et que je ne souhaite te laisser sans réponse, je me base donc sur ton premier envoi (fichiers "RDD") et te propose une unique réponse introduisant la notion d'Année souhaitée...

En l'absence d'information suffisante, je prends donc l'initiative d'insérer l'année de traitement en colonne 1 dans les 2 tableaux. Une vérification est donc systématiquement réalisée pour tester l'année comme souhaité.

Pour ce faire, j'ai modifié ton code comme suit (voir pièces jointes) :

Private Sub CommandButton1_Click()
Dim WbkCible As Workbook
Dim R As Range
Dim nomfich As String
Dim ligne As Long
Dim i As Integer, Annee As Integer

    nomfich = "BDD_" & ThisWorkbook.Name
    Annee = Year(Date)
   
    On Error Resume Next
    Set WbkCible = Workbooks.Open(ThisWorkbook.Path & "" & nomfich) 'Ouverture (ou réouverture) du classeur
    On Error GoTo 0
   
    If WbkCible Is Nothing Then
        MsgBox nomfich & " introuvable", vbExclamation

        Exit Sub
    End If
   
    With WbkCible
        With .Sheets("xxxxBDD")
            'Le traitement de l'année est-il déjà présent ?
            Set R = .Columns(1).Find(Annee)
            If Not R Is Nothing Then
                MsgBox "Traitement année " & Annee & " déjà effectué !", vbExclamation
                Exit Sub
            End If
           
            ligne = .Range("a65536").End(xlUp).Row + 1
            .Cells(ligne, 1).Value = Annee      'Année en colonne 1
           
            For i = 1 To 6
                .Cells(ligne, i + 1).Value = ThisWorkbook.Sheets("xxxxRDD").Cells(i + 6, 8).Value 'Copie des données
            Next i
        End With
   
        With .Sheets("yyyyBDD")
            ligne = .Range("a65536").End(xlUp).Row + 1
            .Cells(ligne, 1).Value = Annee      'Année en colonne 1
           
            .Cells(ligne, 2).Value = ThisWorkbook.Sheets("yyyyRDD").Cells(42, 7).Value  'Copie des données
            .Cells(ligne, 3).Value = ThisWorkbook.Sheets("yyyyRDD").Cells(39, 7).Value  '
            .Cells(ligne, 4).Value = ThisWorkbook.Sheets("yyyyRDD").Cells(33, 7).Value  'Copie des données
        End With
    End With
   
    WbkCible.Save 'Enregistre le fichier
End Sub

Je ne suis pas spécialiste graphique Excel... Mais je tiens à t'informer que le peu d'infos que tu consens à fournir  sur ce point risque fort de ne pas attirer une foule de monde pour te venir en aide...

Je te souhaite bon courage pour la suite.

Cordialement