Re: Pb base de données/formulaires
#11
Débutant XLPages

Inscription: 21/05/2012

Messages: 11

Système d'exploitation:
PC
Version Excel utilisée:
2003,2007
Posté le : 23-05-2012 09h46
Je vous remercie pour l'aide dont vous m'apportez.

Je voudrais cependant clarifier certaines choses, j'ai d'importantes restrictions concernant la confidentialité, les cellules non renseignées correspondent à des termes techniques que je ne peux divulguer.

Si le nombre de totaux passe de 6 à 2, c'est avant tout, et comme toutes les démarches que j'effectue, dans le but de vous simplifier les choses. Parce que ce que je veux vous faire comprendre, c'est que j'ai pleins de tableuax, qui ne se ressemblent pas du tout, donc c'est l'idée ou encore le concept que je vous faire comprendre, puisque en aval je devrais adapter ce code sur mes différents tableaux.

Ce que je cherche, c'est de l'efficacité, de l'ergonomie, du gain de temps et je ne suis pas parvenu à obtenir ceci seul, d'où ma demande chez vous, en aucun cas je veux passer pour le méchant ou vous faire perdre du temps, comprenez le, je suis dans une démarche qui est contraire à perdre mon temps justement.

Je pense qu'il y a un mal entendu, je vais des efforts croyez moi, maintenant si ce n'est pas assez pour vous tanpis pour moi.

En tout cas merci pour ce code, en le lisant j'ai l'impression qu'il réalise ce que je veux faire, je vais le tester et je vous tiens au courant.


Hors Ligne
Rapport   Haut 

Re: Pb base de données/formulaires
#12
Débutant XLPages

Inscription: 21/05/2012

Messages: 11

Système d'exploitation:
PC
Version Excel utilisée:
2003,2007
Posté le : 23-05-2012 15h04
Un grand merci ce code réalise ce que je demandais.

J'ai changé la ligne : 
            Annee = Year(Date)
par :
             Annee = InputBox(Prompt:="En quelle année ces données ont été recueillies?", Title:="Année")

puisqu'il s'avère que parfois je réalise les suivis l'année suivante donc c'est plus adapté, je renseigne moi même l'année à laquelle ont été recueillies les données.

J'aurais une dernière requête si vous voulez bien m'aider, lorsque que je renseigne deux fois la même année, il ya le message disant que le traitement est déja réalisé, est-ce possible que le code me dise "le traitement est déjà réalisé, voulez-vous écraser les données déjà existante?" si je fais oui ca remplace les données sinon comme auparavant rien ne se passe.

Je ne sais pas si cela a déjà été traité sur ce forum je n'ai pas réussi à trouver.

Je vous remercie d'avance.
Hors Ligne
Rapport   Haut 

Re: Pb base de données/formulaires
#13
Accro XLPages

Inscription: 23/05/2008
De La Varenne Saint-Hilaire

Messages: 356

Système d'exploitation:
PC
Version Excel utilisée:
2010
Posté le : 23-05-2012 15h22
Bonjour tube, Myta, myDearFriend,

Concernant ta question sur les graphiques dynamiques, sans exemple c'est un peu théorique mais tu trouveras ci-joint un fichier exemple que tu dois pouvoir adapter à ton fichier réel.

Dans les grandes lignes un graphique dynamique se monte en trois étapes
1- Nommer les séries, dans l'exemple ci-joint trois zones dynamiques (An SA SB) nommées grâce aux fonctions DECALER() et NBVAL(), regarde le tutoriel "Nommer une zone dynamique" pour savoir comment faire

2- Faire le graphique comme un graphique "normal", dans ton cas tu n'auras sans doute pas à passer par cette étape puisque tes graphiques sont déjà faits.

3- Sélectionner les séries dans le graphique, puis modifier les séries dans la barre de formule. Par exemple là où tu as
=SERIE(Feuil1!$C$1;Feuil1!$A$2:$A$4;Feuil1!$C$2:$C$4;2)
tu saisis à la place de Feuil1!$A$2:$A$4 la feuille suivi du nom de la zone année, soit Feuil1!An, pareil pour la série chiffrée ce qui te donneras:
=SERIE(Feuil1!$C$1;Feuil1!An;Feuil1!SB;2)
en validant Excel te remplaceras Feuil1! par le nom du fichier.

Ainsi ton graphique s'adapte à chaque fois que tu ajoutes des lignes dans ta zone de données.

En espérant que cela puisse t'aider,

mth
Pièce jointe:
zip Graph tube.zip   [ Taille: 13.18 Ko - Téléchargements: 510 ]
Hors Ligne
Rapport   Haut 

Re: Pb base de données/formulaires
#14
Débutant XLPages

Inscription: 21/05/2012

Messages: 11

Système d'exploitation:
PC
Version Excel utilisée:
2003,2007
Posté le : 23-05-2012 15h28
Merci Mth, je ne peux pas télécharger depuis mon travail, c'est bloqué, mais je le fais ce soir dès que je rentre et je te tiens au courant dns la soirée ou la matinée de demain si j'arrive à l'adapter.


EDIT : J'avais oublier de gérer la sortie de l'inputbox, par conséquent, après la ligne :

Annee = InputBox(Prompt:="En quelle année ces données ont été recueillies?", Title:="Année") 

j'ai ajouté cette ligne :

 If Annee = "" Or Annee = 0 Then Exit Sub

Et aussi ne pas oublier, la variable "Annee" n'est plus définie comme "Integer", mais cette fois comme "Variant", et maintenant quand je clique sur annuler cela ne plante plus.
Voila en espérant que cela puisse aider.



Edité par tube le 23/05/2012 16:46:14
Hors Ligne
Rapport   Haut 

Re: Pb base de données/formulaires
#15
Débutant XLPages

Inscription: 21/05/2012

Messages: 11

Système d'exploitation:
PC
Version Excel utilisée:
2003,2007
Posté le : 24-05-2012 09h23
Je me permet de relancer ma question du post 12 :

J'aurais une dernière requête si vous voulez bien m'aider, lorsque que je renseigne deux fois la même année, il ya le message disant que le traitement est déja réalisé, est-ce possible que le code me dise :

 "le traitement est déjà réalisé, voulez-vous écraser les données déjà existante?" si je fais oui ca remplace les données si je fais non comme auparavant rien ne se passe.

Je ne sais pas si cela a déjà été traité sur ce forum je n'ai pas réussi à trouver.

Je vous remercie d'avance.

Pour Mth : Je suis en train d'essayer d'adapter la technique de zone dynamique, je te tiendrai au courant si j'arrive à l'adapter ou non.



Hors Ligne
Rapport   Haut 

Re: Pb base de données/formulaires
#16
Débutant XLPages

Inscription: 21/05/2012

Messages: 11

Système d'exploitation:
PC
Version Excel utilisée:
2003,2007
Posté le : 24-05-2012 16h59

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.


Hors Ligne
Rapport   Haut 

Re: Pb base de données/formulaires
#17
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 24-05-2012 21h55
Bonsoir tube, Mth, Mytå,

Le code suivant devrait répondre à ton problème (à tester !) :

' myDearFriend!  -  www.mdf-xlpages.com
Private Sub CommandButton1_Click()
Dim WbkCible As Workbook
Dim R As Range
Dim nomfich As String, Q As String
Dim ligne As Long
Dim i As Integer, Annee As Variant
Dim Ecrase As Boolean

    nomfich = "BDD_" & ThisWorkbook.Name
    Annee = Application.InputBox(Prompt:="En quelle année ces données ont été recueillies?", Title:="Année", Type:=1)
    If Annee = False 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("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
                Q = "Traitement année " & Annee & " déjà effectué !" & vbLf & vbLf & "Voulez-vous écraser les données existantes ?"
                If MsgBox(Q, vbQuestion + vbYesNo, "mDF-XLpages.com") = vbNo Then Exit Sub
                Ecrase = True
                ligne = R.Row
            Else
                ligne = .Range("a65536").End(xlUp).Row + 1
            End If
           
            .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")
            If Ecrase Then
                ligne = .Columns(1).Find(Annee).Row
            Else
                ligne = .Range("a65536").End(xlUp).Row + 1
            End If
            .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

Par ailleurs et concernant ce que tu indiques :
Citation :
tube a écrit :
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é.

... pour tester en supprimant manuellement 2011, il faut supprimer la ligne 2011 impérativement dans les 2 onglets.

En espérant t'avoir aidé.

Et si tu penses que les réponses apportées te conviennent, je te remercie de mettre en pratique ce qui est inscrit au bas de ma signature.

Cordialement,

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: Pb base de données/formulaires
#18
Débutant XLPages

Inscription: 21/05/2012

Messages: 11

Système d'exploitation:
PC
Version Excel utilisée:
2003,2007
Posté le : 24-05-2012 23h17
Bonsoir à tous, bonsoir didier,

Je viens de tester, cela réalise exactement ce que je demandais.
Tu avais vu juste, je pense que je n'avais pas supprimer sur tous mes onglets.

Un grand merci à toi, ainsi qu'à Mth pour les zones dynamiques, et aussi à  Mytå qui a contribué également à la discussion.
Je pense que j'ai rarement vu une telle disponibilité, et toujours dans les plus brefs délais, je tiens également à vous remercier pour cela.
Je regrette les petits accrochages, mettez vous de mon côté, je ne pouvais rien divulguer.

Encore merci, bonne soirée.

Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes