Base de donnée VBA Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
F
Falsby
Jeune membre
Jeune membre
Messages : 46
Inscrit le : 13 janvier 2014
Version d'Excel : 2007

Message par Falsby » 27 novembre 2015, 12:23

bonjour ok merci
F
Falsby
Jeune membre
Jeune membre
Messages : 46
Inscrit le : 13 janvier 2014
Version d'Excel : 2007

Message par Falsby » 2 février 2016, 10:00

bonjour ,
j'ai un problème sur mon fichier base de données si je veux rajouter un nouveau enregistrement j'ai message du type :
Erreur d’exécution 1004 la méthode Copy de la classe Range à échoué et quand je clique sur débodage voici les lignes de codes
quelqu'un peut t il m'aider
merci

End If

If .CB_Statut.Value = "Libellé" Or Len(.CB_Statut) = 0 Then
Message = "Veuillez choisir un statut valide !"
Réponse = MsgBox(Message, vbOKOnly, "Controle de saisie")
.CB_Statut.SetFocus
Exit Sub
End If

MaCivilité = .CB_Civilité.Value
MonNom = .TB_Nom.Value
MonPrénom = .TB_Prénom.Value
MonAdresse = .TB_Adresse.Value
MonCP = .CB_CP.Value
MonTéléphone = .TB_Téléphone.Value
MonEmail = .TB_EMail.Value
MonStatut = .CB_Statut.Value
MesObservations = .TB_Observations.Value
End With

Sheets("Annuaire").Activate
Call Déprotéger

If ModeLigne = "Ajout" Then
Application.ScreenUpdating = False
With Sheets("Annuaire")
.Rows(MaLigneAnnuaire).Select
Selection.Copy
Selection.Insert Shift:=xlDown
Selection.ClearContents
Application.CutCopyMode = False
End With
End If

With Sheets("Annuaire")
'Libellé (colonne A)
.Range("A" & MaLigneAnnuaire).Value = MaCivilité

'Nom (colonne B)
.Range("B" & MaLigneAnnuaire).Value = MonNom

'Prénom (colonne C)
.Range("C" & MaLigneAnnuaire).Value = MonPrénom

'Adresse (colonne D)
.Range("D" & MaLigneAnnuaire).Value = MonAdresse

'CP (colonne E)
.Range("E" & MaLigneAnnuaire).Value = MonCP

'Email (colonne H)
.Range("H" & MaLigneAnnuaire).Value = MonEmail

'Téléphone (colonne I)
.Range("I" & MaLigneAnnuaire).Value = MonTéléphone

'Statut (colonne J)
.Range("J" & MaLigneAnnuaire).Value = MonStatut

'Observations (colonne K)
.Range("K" & MaLigneAnnuaire).Value = MesObservations

'Commune (colonne F)
'=SI(ESTERREUR(RECHERCHEV(E5;Communes;3;FAUX));"";RECHERCHEV(E5;Communes;3;FAUX))
'=IF(ISERROR(VLOOKUP(E5,Communes,3,FALSE)),"",VLOOKUP(E5,Communes,3,FALSE))
Formule = "=IF(ISERROR(VLOOKUP(E" & MaLigneAnnuaire & ",Communes,3,FALSE)),"
Formule = Formule & Chr(34) & Chr(34) & ","
Formule = Formule & "VLOOKUP(E" & MaLigneAnnuaire & ",Communes,3,FALSE))"
.Range("F" & MaLigneAnnuaire).Formula = Formule

'Ville (colonne G)
'=SI(ESTERREUR(RECHERCHEV(E5;Communes;4;FAUX));"";RECHERCHEV(E5;Communes;4;FAUX))
'=IF(ISERROR(VLOOKUP(E5,Communes,3,FALSE)),"",VLOOKUP(E5,Communes,4,FALSE))
Formule = "=IF(ISERROR(VLOOKUP(E" & MaLigneAnnuaire & ",Communes,4,FALSE)),"
Formule = Formule & Chr(34) & Chr(34) & ","
Formule = Formule & "VLOOKUP(E" & MaLigneAnnuaire & ",Communes,4,FALSE))"
.Range("G" & MaLigneAnnuaire).Formula = Formule

.Range("A" & MaLigneAnnuaire).Select
End With
Call Protéger
End Sub
Sub Ecrire_Communes()
Dim Formule, Message, MonCP, MaCommune, MaVille, MesObservations, ModeLigne, MonLibellé As String
Dim Réponse As Integer

With UF_Communes
If .Titre.Caption = "Ajouter une Commune" Then
' AJOUT *******************************************************
ModeLigne = "Ajout"
MaLigneCommune = Range("Communes").Row + 1
Else
'MODIF *******************************************************
ModeLigne = "Modif"
End If

'Contrôles
If Not Len(.TB_CP.Value) > 0 Then
Message = "Veuillez entrer un code postal valide !"
Réponse = MsgBox(Message, vbOKOnly, "Controle de saisie")
.TB_CP.SetFocus
Exit Sub
End If

If Not Len(.TB_Ville.Value) > 0 Then
Message = "Veuillez entrer une ville valide !"
Réponse = MsgBox(Message, vbOKOnly, "Controle de saisie")
.TB_Ville.SetFocus
Exit Sub
End If

If Not Len(.TB_Commune.Value) > 0 Then
Message = "Veuillez entrer une commune valide !"
Réponse = MsgBox(Message, vbOKOnly, "Controle de saisie")
.TB_Commune.SetFocus
Exit Sub
End If

MonCP = .TB_CP.Value
MaVille = .TB_Ville.Value
MaCommune = .TB_Commune.Value
MesObservations = .TB_Observations.Value
End With

MonLibellé = MonCP & " - " & MaVille & " (" & MaCommune & ")"

Sheets("Communes").Activate
Call Déprotéger

If ModeLigne = "Ajout" Then
Application.ScreenUpdating = False
With Sheets("Communes")
.Rows(MaLigneCommune).Select
Selection.Copy
Selection.Insert Shift:=xlDown
Selection.ClearContents
Application.CutCopyMode = False
End With
End If

With Sheets("Communes")
'Code postal (colonne B)
.Range("B" & MaLigneCommune).Value = MonCP

'Ville (colonne C)
.Range("C" & MaLigneCommune).Value = MaVille

'Commune (colonne D)
.Range("D" & MaLigneCommune).Value = MaCommune

'Observations (colonne F)
.Range("F" & MaLigneCommune).Value = MesObservations

'Identifiant (colonne A) : =B5&" - "&C5&" ("&D5&")"
Formule = "=B" & MaLigneCommune & "&" & Chr(34) & " - " & Chr(34) & "&"
Formule = Formule & "C" & MaLigneCommune & "&" & Chr(34) & " (" & Chr(34)
Formule = Formule & "&" & "D" & MaLigneCommune & "&" & Chr(34) & ")" & Chr(34)
.Range("A" & MaLigneCommune).Formula = Formule

'Effectif (colonne E) : =NB.SI(Annuaire!E:E;A:A)
Formule = "=countif(Annuaire!E:E,A:A)"
.Range("E" & MaLigneCommune).Formula = Formule

.Range("B" & MaLigneCommune).Select
End With
Call Protéger

'Test de changement d'un libellé de Commune impliquant une mise à jour de l'annuaire
If ModeLigne = "Modif" Then

If MonLibellé <> MonAncienLibellé Then
MaLigneAnnuaire = Range("Annuaire").Row + 1
Application.ScreenUpdating = False
With Sheets("Annuaire")
ActiveSheet.Unprotect
Boucle_MAJ:
If Len(.Range("B" & MaLigneAnnuaire).Value) = 0 Then GoTo Fin_Boucle_MAJ
If .Range("E" & MaLigneAnnuaire).Value = MonAncienLibellé Then .Range("E" & MaLigneAnnuaire).Value = MonLibellé
MaLigneAnnuaire = MaLigneAnnuaire + 1
GoTo Boucle_MAJ

Fin_Boucle_MAJ:
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:= _
False, AllowSorting:=True, AllowFiltering:=True, AllowUsingPivotTables:= _
True
End With
End If
Sheets("Communes").Activate
End If
End Sub
Avatar du membre
Dan42153
Membre dévoué
Membre dévoué
Messages : 999
Appréciation reçue : 1
Inscrit le : 1 juin 2015
Version d'Excel : 2010 FR

Message par Dan42153 » 2 février 2016, 11:36

Oui, il y avait un petit bug sur les valeurs par défaut des listes déroulantes.
Je l'ai réglé avec un artifice (personne n'a pu me dire sur ce forum pourquoi ma fonction Evaluate plantait).
Mais voilà qui est réglé !
Cordialement, Daniel
Falsby.xlsm
(92.54 Kio) Téléchargé 5 fois
...savoir ce qu'on ne veut pas n'est pas toujours suffisant pour avoir ce qu'on veut...
F
Falsby
Jeune membre
Jeune membre
Messages : 46
Inscrit le : 13 janvier 2014
Version d'Excel : 2007

Message par Falsby » 2 février 2016, 13:08

Bonjour merci de votre aide mais dis moi j'avais déjà commencé a remplir la base données j'ai plusieurs noms et adresses comment faire pour les mettre sur la nouvelle base de données
est il possible de faire copier dans l'ancien et coller sur la nouvelle ou dois je tout recommencer a encoder un à un
merci encore
Avatar du membre
Dan42153
Membre dévoué
Membre dévoué
Messages : 999
Appréciation reçue : 1
Inscrit le : 1 juin 2015
Version d'Excel : 2010 FR

Message par Dan42153 » 2 février 2016, 13:27

Il faut ôter la protection, insérer et coller les lignes et trier...
...savoir ce qu'on ne veut pas n'est pas toujours suffisant pour avoir ce qu'on veut...
F
Falsby
Jeune membre
Jeune membre
Messages : 46
Inscrit le : 13 janvier 2014
Version d'Excel : 2007

Message par Falsby » 2 février 2016, 15:52

Merci beaucoup
bon apres midi
F
Falsby
Jeune membre
Jeune membre
Messages : 46
Inscrit le : 13 janvier 2014
Version d'Excel : 2007

Message par Falsby » 2 février 2016, 16:21

Dan42153 a écrit :Il faut ôter la protection, insérer et coller les lignes et trier...
bonjour désole mais ça, marche pas ça me, fais des codes erreur a l'infini ci joint le fichier original déjà rempli et sur ce fichier que j'arrive pas a rajouter des nouvelles enrengistrement
merci de m'aider
BASE DE DONNEES 8eme Jour.xlsm
(118.86 Kio) Téléchargé 5 fois
Avatar du membre
Dan42153
Membre dévoué
Membre dévoué
Messages : 999
Appréciation reçue : 1
Inscrit le : 1 juin 2015
Version d'Excel : 2010 FR

Message par Dan42153 » 2 février 2016, 16:41

Voilà...
Cordialement, Daniel
Falsby.xlsm
(107.75 Kio) Téléchargé 6 fois
...savoir ce qu'on ne veut pas n'est pas toujours suffisant pour avoir ce qu'on veut...
F
Falsby
Jeune membre
Jeune membre
Messages : 46
Inscrit le : 13 janvier 2014
Version d'Excel : 2007

Message par Falsby » 9 mars 2016, 10:44

Bonjour désolé je reviens vers vous car j'ai eu un grand problème une de mes collègues a du touchée sur je ne sais quel bouton et les
sigles en haut en bleu qui permettait de rajouter modifier filtrer supprimer ou revenir à l’accueil ont disparu est je ne sais pas comment faire pour les faire réapparaitre.
en deux je me demandais s'il y'a une possibilité au niveau du statut d'avoir un choix pour la sélection
c'est à dire nous avons des membres qui ont plusieurs statuts.
un membre peut être a la fois Parents des résidents , membre effectif ,donateur etc.
pour le moment je suis obligé de répéter le nom autant de fois et a chaque fois sélectionner le statuts.

merci encore une fois de plus
bonne journée
BASE DE DONNEES.xlsm
(111.73 Kio) Téléchargé 3 fois
Avatar du membre
Dan42153
Membre dévoué
Membre dévoué
Messages : 999
Appréciation reçue : 1
Inscrit le : 1 juin 2015
Version d'Excel : 2010 FR

Message par Dan42153 » 9 mars 2016, 14:08

Bonjour,
Falsby a écrit :je ne sais pas comment faire pour les faire réapparaitre.
Il faut absolument faire une sauvegarde du classeur sur support externe (disque externe, clé USB, stockage dans le cloud), surtout si vous êtes plusieurs à l'utiliser, ou si vous ôtez la protection de temps à autre. Cette sauvegarde doit être effectuée idéalement automatiquement (tâche planifiée), et à une fréquence identique aux accès...
Falsby a écrit :nous avons des membres qui ont plusieurs statuts.
Première hypothèse de solution, créer des combinaisons de statuts : "Parents résidents - Membre effectif" par exemple... Autre hypothèse : créer une autre feuille pour les Positions statutaires... L'important étant de pouvoir obtenir la liste des membres correspondant à un statut, sans gonfler artificiellement l'annuaire. L'inscription d'une même personne sur deux lignes déroge à cette dernière règle...

D'une manière générale, le classeur a été fournir avec la protection activée : manifestement, des utilisateurs ont ôté la protection et ajouté des lignes à la main (communes)... ce qui a des conséquences fâcheuses sur le fonctionnement global : à éviter, utiliser plutôt les boutons, qui sont là pour ça...

Enfin, dernière observation : quand dans l'annuaire, une commune apparaît en rouge, cela signifie que la commune a été modifiée dans la feuille Communes. Cela se produit notamment si on fait sauter les protections pour modifier les valeurs hors macros. C'est la même chose pour les statuts, et pour toutes les listes en fait...

Voilà le fichier rétabli... Cordialement, Daniel
BASE DE DONNEES.xlsm
(126.37 Kio) Téléchargé 13 fois
...savoir ce qu'on ne veut pas n'est pas toujours suffisant pour avoir ce qu'on veut...
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message