- Microsoft Access est un outil accessible pour gérer des bases de données sans connaissances avancées en programmation.
- Il vous permet de créer, personnaliser et gérer des bases de données avec une interface intuitive et visuelle.
- Il offre des avantages tels que l’intégration avec d’autres applications Microsoft et la facilité d’utilisation pour les débutants.
- Il est idéal pour les projets de petite et moyenne taille, avec des options d'évolutivité vers des systèmes plus robustes.
Bases de données Access : le guide ultime du débutant
Introduction aux bases de données avec Access
Les bases de données sont au cœur de la gestion de l’information dans le monde numérique d’aujourd’hui. Microsoft Access, un outil puissant et polyvalent, est devenu la passerelle pour de nombreux débutants dans le monde fascinant des bases de données. Dans ce guide complet, nous couvrirons tous les éléments essentiels pour vous aider à maîtriser les bases de données Access et à jeter les bases de votre carrière dans la gestion des données.
Access combine la simplicité d'une interface visuelle avec la puissance d'un système de gestion de base de données relationnelle. Cette combinaison en fait un choix idéal pour ceux qui souhaitent se lancer dans le monde des bases de données sans avoir à plonger directement dans des langages de programmation complexes comme SQL.
Tout au long de cet article, nous explorerons tout, des concepts de base aux techniques avancées, vous donnant une solide compréhension de la façon de créer, gérer et optimiser les bases de données avec Access. Que vous cherchiez à organiser des informations personnelles ou à développer des solutions commerciales, ce guide vous fournira les connaissances dont vous avez besoin pour tirer le meilleur parti de cet outil.
Notions de base sur Microsoft Access
Microsoft Access est une application de système de gestion de base de données relationnelle qui fait partie de la suite Microsoft Office. Son interface intuitive et son intégration avec d’autres outils Office en font un choix populaire pour les utilisateurs novices et professionnels.
Qu'est-ce qu'une base de données relationnelle ?
Une base de données relationnelle est un type de base de données qui organise les informations en tables interconnectées. Chaque table représente une entité (comme des clients, des produits ou des commandes), et les relations entre ces tables permettent de créer des liens logiques entre les données. Ce modèle de base de données est fondamental pour comprendre le fonctionnement d'Access.
Principaux composants d'Access
- dessiner:Ils constituent la base de toute base de données dans Access. C'est ici que les informations sont stockées dans des lignes (enregistrements) et des colonnes (champs).
- Consultations:Ils permettent de récupérer, filtrer et analyser des données d'une ou plusieurs tables. Les requêtes sont un élément essentiel du travail avec les bases de données SQL dans Access.
- formes:Ils facilitent la saisie et la visualisation des données de manière plus conviviale que les tableaux bruts.
- information:Ils permettent de présenter les données de manière organisée et visuellement attrayante pour l’analyse ou l’impression.
- Macros et modules VBA:Ils offrent une automatisation et des fonctionnalités avancées pour les utilisateurs plus expérimentés.
Avantages de l'utilisation d'Access pour les bases de données
- Facilité d'utilisation:Son interface graphique vous permet de créer et de gérer des bases de données sans avoir besoin de connaissances approfondies en programmation.
- Intégration de bureau:Fonctionne parfaitement avec Excel, Word et d'autres applications Microsoft.
- évolutivité:Idéal pour les projets de petite et moyenne taille, avec la possibilité de migrer vers des systèmes plus robustes tels que SQL Server.
- Personnalisation:Il offre un haut degré de flexibilité pour adapter la base de données à des besoins spécifiques.
Premiers pas avec Access
Pour commencer, il est essentiel de vous familiariser avec l’interface d’Access. Lorsque vous ouvrez l'application, des options vous seront présentées pour créer une nouvelle base de données ou ouvrir une base de données existante. L’exploration de modèles prédéfinis peut être un excellent moyen de comprendre la structure d’une base de données bien conçue.
Une fois que vous avez créé votre première base de données, prenez le temps d'explorer le ruban et les différentes vues disponibles. La vue de conception de table, par exemple, vous permettra de définir des champs et des types de données, tandis que la vue de feuille de données vous montrera les enregistrements dans un format de type feuille de calcul.
N’oubliez pas que la pratique est la clé. N'ayez pas peur d'expérimenter différentes structures et fonctionnalités. Au fur et à mesure que vous progresserez dans ce guide, vous construirez une base solide pour créer des bases de données Access de plus en plus complexes et efficaces.
Concevoir des tables et des relations
La conception de tables et la création de relations sont essentielles pour créer une base de données efficace et fonctionnelle dans Access. Cette étape pose les bases de tous les travaux ultérieurs, il est donc essentiel de lui consacrer le temps et l’attention nécessaires.
Créer des tableaux efficaces
Lors de la création de tables dans Access, il est important de suivre quelques bonnes pratiques :
- Standardisation:Divisez les informations en tables logiques pour éviter la redondance des données. Par exemple, au lieu d’avoir une seule table avec toutes les informations sur les clients et les commandes, créez des tables distinctes pour les clients et les commandes.
- Choix des types de données:Sélectionnez le type de données approprié pour chaque champ (texte, nombre, date, etc.). Cela permet non seulement d’économiser de l’espace, mais également d’améliorer l’intégrité des données.
- Clés primaires:Chaque table doit avoir une clé primaire unique qui identifie chaque enregistrement. Access peut générer automatiquement un champ « ID » à numérotation automatique à cette fin.
- Champs calculés:Utilisez des champs calculés pour les informations qui peuvent être dérivées d’autres champs, plutôt que de les stocker directement.
Établir des relations
Les relations sont au cœur du modèle de base de données relationnelle. Dans Access, vous pouvez créer plusieurs types de relations :
- Un à un:Chaque enregistrement du tableau A se rapporte à un seul enregistrement du tableau B.
- un à plusieurs:Un enregistrement dans la table A peut être lié à plusieurs enregistrements dans la table B.
- Plusieurs à plusieurs:Plusieurs enregistrements de la table A peuvent être liés à plusieurs enregistrements de la table B (généralement implémenté via une table de jointure).
Pour établir des relations :
- Accédez à l’onglet « Outils de base de données » et sélectionnez « Relations ».
- Faites glisser les champs liés entre les tables pour créer la connexion.
- Définit l'intégrité référentielle pour maintenir la cohérence des données.
Intégrité référentielle
L'intégrité référentielle est essentielle pour maintenir la cohérence des données dans votre base de données. Lorsque vous l'activez :
- Empêche la suppression des enregistrements référencés par d'autres tables.
- Garantit que les données ne peuvent pas être insérées dans une table associée si un enregistrement correspondant n'existe pas dans la table parent.
Exemple pratique de bases de données avec Access
Imaginons une base de données pour une boutique en ligne. Nous pourrions avoir les tables suivantes :
- Clients: Client_ID (clé primaire), Nom, Email, Adresse
- Produits: Product_ID (clé primaire), Product_Name, Prix, Stock
- Commandes: Order_ID (clé primaire), Customer_ID (clé étrangère), Order_Date
- Détails de la commande: Detail_ID (clé primaire), Order_ID (clé étrangère), Product_ID (clé étrangère), Quantity
Dans ce modèle, nous établirions des relations un-à-plusieurs entre les clients et les commandes, et entre les commandes et les détails de la commande. La table Order_Details agit comme une table de jointure pour la relation plusieurs-à-plusieurs entre les commandes et les produits.
Lorsque vous concevez vos tables et vos relations, pensez toujours à la manière dont les données sont liées dans le monde réel. Une bonne conception de base de données reflète la logique du système que vous modélisez, facilitant des requêtes efficaces et une maintenance à long terme.
N'oubliez pas que la conception d'une base de données est un processus itératif. N’ayez pas peur de faire des ajustements à mesure que vous comprenez mieux vos besoins en matière de données. Avec la pratique et l’expérience, vous développerez un instinct pour créer des structures de bases de données Access robustes et efficaces.
Requêtes avancées dans Access
Les requêtes sont l’une des fonctionnalités les plus puissantes d’Access, vous permettant d’extraire, de filtrer et d’analyser efficacement les données. La maîtrise des requêtes est essentielle pour tirer le meilleur parti de vos bases de données Access et effectuer des analyses complexes.
Types de requêtes dans Access
- Consultations de sélection:Les plus courantes, elles récupèrent des données d'une ou plusieurs tables en fonction de critères spécifiques.
- Requêtes d'action:Apporter des modifications aux données, telles que la mise à jour, la suppression ou l'ajout d'enregistrements.
- Requêtes de tableau croisé:Résumez les données et présentez-les dans un format de tableau croisé dynamique.
- Requêtes syndicales: Combinez les enregistrements de plusieurs tables en fonction de champs associés.
Créer des requêtes avancées
Pour créer des requêtes plus sophistiquées, vous pouvez utiliser la vue de conception de requête ou écrire directement du SQL. Voici quelques techniques avancées :
Utilisation de plusieurs critères
Vous pouvez combiner plusieurs critères à l'aide d'opérateurs logiques tels que AND et OR. Par exemple:
SELECT * FROM Productos
WHERE (Precio > 100 AND Categoria = 'Electrónica')
OR (Stock < 10 AND Proveedor = 'Proveedor A')Requêtes sur les totaux
Utilise des fonctions d'agrégation telles que SUM, AVG, COUNT pour effectuer des calculs sur des groupes d'enregistrements :
SELECT Categoria, AVG(Precio) AS PrecioPromedio
FROM Productos
GROUP BY Categoria
HAVING AVG(Precio) > 50Sous-requêtes
Les sous-requêtes vous permettent d'imbriquer une requête dans une autre pour effectuer des opérations plus complexes :
SELECT NombreProducto, Precio
FROM Productos
WHERE Precio > (SELECT AVG(Precio) FROM Productos)Optimisation des requêtes
Pour améliorer les performances de vos requêtes :
- Utiliser les index: Créez des index sur les champs fréquemment utilisés dans les requêtes.
- Limite les données récupérées:Sélectionnez uniquement les champs obligatoires au lieu d'utiliser *.
- Utilisez des JOINs au lieu de sous-requêtes dans la mesure du possible pour améliorer l’efficacité.
Requêtes paramétrées
Les requêtes paramétrées vous permettent de créer des requêtes flexibles qui invitent l'utilisateur à saisir des informations :
PARAMETERS Currency;
SELECT * FROM Productos
WHERE Precio > Travailler avec des bases de données avec SQL dans Access
Bien qu'Access fournisse une interface graphique pour créer des requêtes, la connaissance de SQL vous donne plus de contrôle et de flexibilité. Vous pouvez basculer entre la vue Conception et la vue SQL pour affiner vos requêtes.
Exemple d'une requête SQL plus complexe :
SELECT c.NombreCliente,
SUM(dp.Cantidad * p.PrecioUnitario) AS TotalGastado
FROM Clientes c
INNER JOIN Pedidos pe ON c.ID_Cliente = pe.ID_Cliente
INNER JOIN Detalles_Pedido dp ON pe.ID_Pedido = dp.ID_Pedido
INNER JOIN Productos p ON dp.ID_Producto = p.ID_Producto
WHERE YEAR(pe.Fecha_Pedido) = YEAR(Date())
GROUP BY c.NombreCliente
HAVING SUM(dp.Cantidad * p.Precio) > 1000
ORDER BY TotalGastado DESC
Cette requête calcule le total dépensé par chaque client au cours de l'année en cours, en affichant uniquement ceux qui ont dépensé plus de 1000 XNUMX, classés du montant le plus élevé au plus bas.
La maîtrise des requêtes avancées dans Access vous permettra d'extraire des informations précieuses de vos données, d'effectuer des analyses complexes et de prendre des décisions éclairées en fonction de votre base de données. Entraînez-vous à créer des requêtes de plus en plus complexes et n'ayez pas peur d'expérimenter différentes techniques et combinaisons de fonctions SQL. Les bases de données avec Access sont toujours possibles aujourd'hui.
Formulaires interactifs pour la saisie de données
Les formulaires dans Access sont des outils fondamentaux pour l'interaction de l'utilisateur avec la base de données. Ils fournissent une interface conviviale pour la saisie, l’édition et la visualisation des données, améliorant considérablement l’expérience utilisateur et l’efficacité de la gestion des informations.
Importance des formulaires
Les formulaires offrent plusieurs avantages par rapport à la saisie directe de données dans des tableaux :
- Facilité d'utilisation:Ils présentent les données d’une manière plus organisée et visuellement attrayante.
- Contrôle d'entrée:Ils permettent de valider les données et d’éviter les erreurs courantes.
- Personnalisation:Ils peuvent être adaptés pour afficher uniquement les informations pertinentes pour chaque utilisateur.
- Automation:Ils peuvent inclure des calculs automatiques et une logique métier.
Créer des formulaires de base
Pour créer un formulaire de base :
- Sélectionnez la table ou la requête sur laquelle vous souhaitez baser le formulaire.
- Allez dans l’onglet « Créer » et choisissez « Formulaire » pour une création rapide.
- Utilisez l'assistant de formulaire pour plus de contrôle sur votre conception initiale.
Conception de formulaire avancée
Pour créer des formulaires plus sophistiqués :
- Utiliser la vue de conception:Permet un contrôle précis de la disposition des éléments.
- Ajouter des contrôles: Comprend des zones de texte, des boutons, des listes déroulantes, etc.
- Personnalisez le look:Ajustez les couleurs, les polices et les styles pour améliorer l'esthétique.
- Créer des sous-formulaires:Utile pour afficher des données associées (par exemple, les commandes des clients).
Validation des données dans les formulaires
La validation est essentielle pour maintenir l’intégrité des données :
- Règles de validation:Définissez des règles pour les champs (par exemple, des plages de dates valides).
- Messages d'erreur personnalisés:Fournit un retour clair lorsque des données incorrectes sont saisies.
- Listes de valeurs:Utilisez des listes déroulantes pour limiter les options à des valeurs prédéfinies.
Exemple de règle de validation pour un champ d'âge :
Entre 18 Y 100Avec le message d'erreur :
La edad debe estar entre 18 y 100 años.Automatisation avec macros et VBA
Pour des fonctionnalités plus avancées, vous pouvez utiliser des macros ou Visual Basic pour Applications (VBA) :
- Macros:Ils automatisent les actions courantes sans avoir besoin de programmation.
- VBA:Offre une plus grande flexibilité pour une logique complexe et une personnalisation avancée.
Exemple de code VBA pour valider un formulaire avant de l'enregistrer :
Private Sub Form_BeforeUpdate(Cancel As Integer)
If IsNull(Me.NombreCliente) Or Len(Trim(Me.NombreCliente)) = 0 Then
MsgBox "El nombre del cliente es obligatorio.", vbExclamation
Cancel = True
End If
End SubCréer des formulaires dynamiques
Les formulaires dynamiques s'adaptent en fonction des actions de l'utilisateur ou de l'état des données :
- Filtres dynamiques: Modifiez les options disponibles sur un contrôle en fonction des sélections précédentes.
- Visibilité conditionnelle:Afficher ou masquer des champs en fonction de certaines conditions.
- Calculs en temps réel: Met à jour les totaux ou les résumés au fur et à mesure que l'utilisateur saisit des données.
Bonnes pratiques pour la conception de formulaires
- Facilité:Ne surchargez pas le formulaire avec trop d'éléments.
- cohérence:Gardez une conception cohérente dans tous vos formulaires.
- Accessibilité: Assurez-vous que le formulaire est adapté au clavier et compatible avec les lecteurs d’écran.
- Réaction:Fournit une confirmation claire des actions entreprises.
Exemple pratique : Bon de commande
Imaginons un formulaire pour saisir de nouvelles commandes dans notre base de données :
- En-tête de commande:Champs pour l'ID client (liste déroulante), la date de commande (avec validation) et le statut de la commande.
- Détails de la commande:Sous-formulaire qui affiche une liste de produits, de quantités et de prix.
- Résumé:Champs calculés qui affichent le total de la commande, les taxes et le total final.
- Boutons d'action: «Enregistrer la commande», «Annuler», «Imprimer la facture».
Code VBA pour calculer le total de la commande :
Private Sub Calcular_Total()
Dim rs As Recordset
Dim total As Currencycomplet » rs = Me.Sous-formulaire_Détails.Forme.Clonage d'ensembles d'enregistrementsla totalité de votre cycle de coaching doit être payée avant votre dernière session. = 0
if Pas rs.EOF Ensuiters.Déplacez-vous d'abord
Do Jusqu'à ce que rs.EOF
la totalité de votre cycle de coaching doit être payée avant votre dernière session. = la totalité de votre cycle de coaching doit être payée avant votre dernière session. + rs!QUANTITÉ * rs!Prix unitaire
rs.DéplacerSuivant
boucle
Fin si
Rapports personnalisés et analyse de données
Les rapports dans Access sont des outils puissants pour présenter et analyser efficacement les données. Ils vous permettent de transformer les informations stockées dans votre base de données en documents visuellement attrayants et faciles à comprendre, idéaux pour la prise de décision et la présentation des résultats.
Notions de base sur les rapports d'accès
Les rapports dans Access offrent plusieurs avantages :
- Présentation professionnelle:Ils vous permettent de créer des documents avec une apparence soignée et professionnelle.
- Flexibilité:Ils peuvent être personnalisés pour afficher les données de plusieurs manières.
- Calculs automatiques:Il s’agit notamment de totaux, de moyennes et d’autres calculs complexes.
- Regroupement et classification:Ils organisent les données de manière logique et facile à suivre.
Créer des rapports de base
Pour créer un rapport de base :
- Sélectionnez la table ou la requête sur laquelle vous souhaitez baser le rapport.
- Accédez à l’onglet « Créer » et choisissez « Rapport » pour une création rapide.
- Utilisez l'assistant de rapport pour plus de contrôle sur votre conception initiale.
Conception de rapport avancée
Pour des rapports plus sophistiqués :
- Utiliser la vue de conception:Permet un contrôle précis de la disposition des éléments.
- Ajouter des éléments graphiques:Inclure des logos, des images et des graphiques pour améliorer la présentation visuelle.
- Créer des sections personnalisées:Ajoutez des en-têtes et des pieds de page pour chaque groupe de données.
- Utiliser des expressions:Incorpore des calculs et une logique conditionnelle dans le rapport.
Regroupement et classification des données
Le regroupement et la classification sont essentiels pour organiser l’information :
- Niveaux de regroupement:Organiser les données en catégories et sous-catégories.
- Totaux du groupe:Calculez les sous-totaux pour chaque groupe de données.
- Classification personnalisée: Trier les données selon plusieurs critères.
Exemple d'expression pour calculer les ventes totales par groupe :
=Sum(*)Graphiques et visualisations
Les graphiques peuvent améliorer considérablement votre compréhension des données :
- Graphiques intégrés:Insérez des graphiques directement dans le rapport.
- graphiques dynamiques:Créez des visualisations qui se mettent à jour automatiquement avec les données.
- Format conditionnel:Utilisez des couleurs et des styles pour mettre en évidence des tendances ou des valeurs importantes.
Rapports interactifs
Pour créer des rapports plus dynamiques :
- Paramètres:Permet aux utilisateurs de personnaliser le rapport au moment de l'exécution.
- hyperliens:Contient des liens vers des détails supplémentaires ou des ressources externes.
- Sous-rapports:Intégrez des rapports dans d’autres rapports pour afficher les données associées.
Exemple de rapport paramétré :
PARAMETERS Short;
SELECT *
FROM Ventas
WHERE Year(]) = Exportation et distribution de rapports
Access propose plusieurs options pour partager des rapports :
- Exporter au format PDF:Idéal pour la distribution et l'archivage.
- Exporter vers Excel:Utile pour une analyse plus approfondie.
- Envoi par e-mail: Automatisez la distribution des rapports.
Analyse avancée des données : bases de données avec Access
Pour une analyse plus approfondie :
- Tableaux dynamiques:Créez des résumés interactifs de grands ensembles de données.
- Requêtes de tableau croisé:Génère des rapports matriciels pour des comparaisons complexes.
- Intégration Power BI:Connectez vos données Access aux outils de Business Intelligence pour une analyse avancée.
Exemple pratique : Rapport annuel des ventes
Imaginons un rapport annuel des ventes pour notre boutique en ligne :
- En-tête du rapport:Titre, année, logo de l'entreprise.
- Résumé analytique:Diagramme à barres montrant les ventes mensuelles.
- Détails par catégorie:
- Tableau avec les ventes par catégorie de produits.
- Graphique à secteurs montrant la répartition des ventes.
- Meilleurs clients:Liste des 10 meilleurs clients avec leurs totaux d'achats.
- Tendances:Graphique linéaire comparant les ventes au cours des 3 dernières années.
- Pied de page:Date de génération du rapport, numéro de page.
Code VBA pour mettre à jour le graphique des ventes mensuelles :
Private Sub ActualizarGraficoVentas()
Dim ctl As Control
Dim rst As Recordsetcomplet » ctl = Me.Graphique des ventescomplet » rst = Base de données actuelle.Ouvrir un jeu d'enregistrements(« SÉLECTIONNEZ Mois, SOMME (Total) COMME SalesMonth DE Sales GROUP BY Mois »)
ctl.Source de ligne = rst.Nomctl.Type de source de ligne = «Table/Requête»
ctl.Type de graphique = xlColumnClusterisé
ctl.Titre du graphique = «Ventes mensuelles»
Fin Sol
Les rapports personnalisés et l’analyse des données sont des composants essentiels de l’utilisation avancée des bases de données avec Access. En maîtrisant ces techniques, vous serez en mesure d’extraire des informations précieuses de vos données et de les présenter efficacement à différents publics. N'oubliez jamais d'adapter vos rapports aux besoins spécifiques de votre public et de maintenir un équilibre entre l'exhaustivité des informations et la clarté de la présentation.
Automatisation avec macros et VBA
L'automatisation est essentielle pour améliorer l'efficacité et la fonctionnalité de vos bases de données Access. Les macros et Visual Basic pour Applications (VBA) fournissent des outils puissants pour automatiser les tâches répétitives, mettre en œuvre une logique métier complexe et créer des solutions personnalisées.
Introduction aux macros dans Access
Les macros sont des séquences d'actions que vous pouvez créer sans aucune connaissance en programmation . Elles sont idéales pour les tâches simples et répétitives.
Avantages des macros :
- Facile à créer et à modifier
- Aucune connaissance en programmation requise
- Sûr et facile à déboguer
Exemple de macro simple pour ouvrir un formulaire :
- Créer une nouvelle macro
- Ajoutez l’action « OpenForm »
- Sélectionnez le formulaire que vous souhaitez ouvrir
- Enregistrer la macro
Macros avancées
Les macros peuvent être plus sophistiquées :
- Macros conditionnelles:Ils exécutent des actions en fonction de conditions.
- Macros de données:Ils effectuent des opérations sur les données des tables.
- Macros d'interface utilisateur:Ils personnalisent l'expérience utilisateur.
Exemple de macro conditionnelle :
Si ! > 1000 Entonces
AplicarDescuento
MostrarMensaje
FinSiIntroduction à VBA
VBA est un langage de programmation complet qui offre plus de flexibilité et de puissance que les macros.
Avantages de VBA :
- Contrôle total sur la logique et le déroulement du programme
- Intégration avec d'autres applications Office
- Possibilité de créer des fonctions personnalisées
Pour démarrer avec VBA :
- Ouvrez l'éditeur Visual Basic (Alt + F11)
- Insérer un nouveau module ou formulaire
- Écrivez votre code VBA
Notions de base de VBA
Quelques structures fondamentales en VBA :
- Variables et types de données:
Dim nombreCliente As String
Dim edad As Integer
Dim precioTotal As Currency- Structures de contrôle:
If edad >= 18 Then
MsgBox "Eres mayor de edad"
Else
MsgBox "Eres menor de edad"
End IfPour i = 1 À 10Déboguer.Imprimer i
Suivant i
- Fonctions et sous-routines:
Function CalcularDescuento(precio As Currency) As Currency
If precio > 100 Then
CalcularDescuento = precio * 0.1
Else
CalcularDescuento = 0
End If
End FunctionSol Mise à jour de l'inventaire()' Code pour mettre à jour l'inventaire
Fin Sol
Automatisation des tâches courantes
Exemples de tâches que vous pouvez automatiser :
- Importation et exportation de données:
Sub ImportarDatosExcel()
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "TablaDestino", "C:\Datos\Archivo.xlsx", True
End Sub- Envoyer des emails:
Sub EnviarInformeEmail()
Dim objOutlook As Object
Dim objMail As Objectcomplet » Perspectives obj = CreateObject(« Outlook.Application »)
complet » objMail = Perspectives obj.Créer un élément(olMailItem)Avec objMail
.À = «[email protected]»
.Sujet = «Mise à jour de la base de données»
.Body = «La base de données a été mise à jour.»
.Pièces jointes« C:\Reports\MonthlyReport.pdf »
.Envoyer
Fin Avec