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 :
- 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...)
- 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
|