Base de donnée VBA

bonjour ok merci

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

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

12falsby.xlsm (92.54 Ko)

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

Il faut ôter la protection, insérer et coller les lignes et trier...

Merci beaucoup

bon apres midi

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

Voilà...

Cordialement, Daniel

11falsby.xlsm (107.75 Ko)

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

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

18base-de-donnees.xlsm (126.37 Ko)

Bonjour merci infiniment voila je viens de le mettre sur notre disque dur externe

pour ce qui est des statut je penses que je pourrai pas le faire je connais pas bien Excel moi ce que je voudrai c'est d'avoir

une liste de sélection avec des cases à coches comme dans l'exemple ci-joint

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

merci encore et bonne journée

19exemple.xlsx (214.86 Ko)

bonjour Daniel,

je reviens vers vous encore une nouvelles fois pour ma base de données.

je suis confronté a des petits problèmes au niveau des statuts.

actuellement je suis obligé de répéter plusieurs noms en fonction de leur statuts car une personne peut avoir plusieurs statuts

exemple Donateur, parents résidents etcccccc.

y"a t il pas une possibilité de pouvoir attribuer plusieurs statut a une personne au lieu de répéter son nom plusieurs fois.

voire exemple

12base-de-donnees.xlsm (128.08 Ko)

Bonjour Falsby,

Je ne vois qu'un moyen simple, et encore... ça pourrait consister à insérer quelques colonnes (Statut 2, Statut 3, voire Statut 4, Statut 5), pour enregistrer plusieurs statuts pour une même personne (sur la même ligne, donc).

Avantages :

  • ça peut être assez vite fait, même si je ne peux rien garantir car je suis charrette sur pas mal de choses, et il faut adapter le formulaire...
  • ça permet de voir assez vite ce que fait une personne dans l'asso

Inconvénients :

  • ça oblige à déterminer un nombre max de statuts pour une même personne : si ce nombre est dépassé, c'est cuit...
  • ça ne permet pas de lister facilement les personnes exerçant tel statut dans l'asso, l'information pouvant se trouver dans plusieurs colonnes différentes...
  • ça interdit de même l'usage des tableaux et graphiques croisés dynamiques qui auraient le statut pour critère d'analyse...

Ceci dit, je ne vois rien de plus simple...

Cordialement, Daniel

bonsoir

merci je vais essayer et voire

Rechercher des sujets similaires à "base donnee vba"