Titre du sujet : Re: Pb base de données/formulaires par tube le 24/05/2012 16:59:08
C'est bon Mth, j'ai réussi à adapter cette technique de zone dynamique, le lien que tu avais mis était très bien détaillé, et de toute façon le fichier que tu m'avais confectionné faisait exactement ce que je voulais donc je n'ai eu aucun mal à l'adapter.
Je suis face à un nouveau problème, en plus du problème évoqué au post précédent.
Pour ce nouveau problème, je m'explique, voici déjà la macro que j'utilise qui est en rélaité celle que didier m'a fourni plus deux lignes que j'ai rajouté et que j'ai expliqué dans des posts précédents :
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 Variant
nomfich = "BDD_" & ThisWorkbook.Name
Annee = InputBox(Prompt:="En quelle année ces données ont été recueillies?", Title:="Année")
If Annee = "" Or Annee = 0 Then Exit Sub
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("Feuil1")
'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("test_BDD").Cells(i + 6, 8).Value 'Copie des données
Next i
End With
With .Sheets("Conso_annuelle_elect")
ligne = .Range("a65536").End(xlUp).Row + 1
.Cells(ligne, 1).Value = Annee 'Année en colonne 1
.Cells(ligne, 2).Value = ThisWorkbook.Sheets("3_Comptage_Elect").Cells(42, 7).Value 'Copie des données
.Cells(ligne, 3).Value = ThisWorkbook.Sheets("3_Comptage_Elect").Cells(39, 7).Value '
.Cells(ligne, 4).Value = ThisWorkbook.Sheets("3_Comptage_Elect").Cells(33, 7).Value 'Copie des données
End With
End With
WbkCible.Save 'Enregistre le fichier
End Sub
Maintenant j'explique mon problème, j'appuie sur mon bouton, ma macro s'exécute, je renseigne l'année admettons 2011, cette valeur viens se coller dans la première colonne de ma base de données tout va bien. Pour tester, j'ai supprimer la ligne de l'année 2011 puisque je voulais retester le mécanisme. puis je relance ma macro, je re-rentre 2011, et là, paf, il me dit que j'ai déjà effectué le traitement pour cette année là, alors que je viens d'enlever la ligne correspondante.
Je voudrais savoir si à un moment, ce 2011 n'est pas dans une mémoire que la macro génère, ou un chose similaire, et s'il on ne pouvait pas vider cette mémoire à la fin de la macro, enfin je ne sais pas si cela devrais résoudre mon problème en tout cas je suis bloqué.
A noter que j'ai pour objectif, même si je n'ai pas encore trouvé la réponse, comme expliqué au post précedent, de mettre en place quelques lignes pour pouvoir écraser les lignes déjà existante (si je veux refaire le traitement de l'année 2011 par exemple), donc cela résoudrais le problème. Mais toujours est-il que ce n'est pas normal qu'il me dise que je ne peux pas faire le traitement alors que je viens de supprimer la ligne "2011".
En espérant que j'ai été clair, je vous serais très reconnaissant si vous m'aidiez encore une fois, car à priori, si ces deux problèmes, liés étaient résolus, tout serait ok pour moi, et je ne vous embetterais plus ensuite.
|