Créer une plage dynamique pour les compétences en négociation, Excel VBA
Voici une explication détaillée de la manière de créer une plage dynamique pour les compétences en négociation avec VBA dans Excel. Ce code se concentre sur la définition dynamique d’une plage en fonction des entrées de l’utilisateur et effectue des actions comme le filtrage, les calculs ou d’autres opérations.
Objectif
Nous allons créer une plage dynamique dans Excel avec VBA qui s’adapte aux données saisies par l’utilisateur. La plage sera basée sur des indicateurs de compétences en négociation (comme les scores de performance ou les évaluations de compétence) et s’ajustera automatiquement en fonction des données saisies dans la feuille de calcul.
Ce que fera le code
- Créer une plage dynamique : S’ajuster automatiquement lorsque de nouvelles données sont ajoutées ou supprimées.
- Filtrer les données : Il filtrera les données selon certains critères, par exemple, filtrer les compétences en négociation par une certaine note.
- Afficher les résultats : Les résultats seront affichés dynamiquement en fonction du contenu de la plage.
Structure des données exemple :
- Colonne A : Compétences en négociation (noms des compétences comme « Communication », « Résolution de problèmes », « Écoute active », etc.)
- Colonne B : Évaluations des compétences (valeurs numériques représentant les évaluations)
- Colonne C : Commentaires sur la performance (textes ou remarques)
Le Code VBA
Sub CreateDynamicRangeAndFilter()
Dim ws As Worksheet
Dim lastRow As Long
Dim rng As Range
Dim skillRange As Range
Dim filterCriteria As String
Dim filterColumn As Integer
' Définir la feuille de calcul
Set ws = ThisWorkbook.Sheets("Sheet1") ' Changez "Sheet1" par le nom de la feuille que vous utilisez
' Trouver la dernière ligne avec des données dans la colonne A (colonne des compétences)
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' Créer la plage dynamique de A1 à la dernière ligne
Set rng = ws.Range("A1:C" & lastRow)
' Créer une plage nommée dynamique (facultatif, si vous voulez utiliser la plage avec un nom)
ThisWorkbook.Names.Add Name:="NegotiationSkillsRange", RefersTo:=rng
' Afficher un message avec la plage définie
MsgBox "La plage dynamique 'NegotiationSkillsRange' a été créée : " & rng.Address, vbInformation
' Demander à l'utilisateur un critère de filtrage (par exemple, une évaluation minimale)
filterCriteria = InputBox("Entrez la note minimale des compétences à filtrer :", "Critère de filtrage", "3")
' Convertir le critère de filtrage en valeur numérique
If IsNumeric(filterCriteria) Then
filterCriteria = CInt(filterCriteria)
Else
MsgBox "Entrée invalide. Veuillez entrer une valeur numérique valide."
Exit Sub
End If
' Appliquer le filtre à la colonne B (Évaluations des compétences)
filterColumn = 2 ' La colonne B est la deuxième colonne (Évaluations des compétences)
' Supprimer les filtres existants
If ws.AutoFilterMode Then ws.AutoFilter.ShowAllData
' Appliquer le nouveau filtre
rng.AutoFilter Field:=filterColumn, Criteria1:=">=" & filterCriteria
' Optionnellement, vous pouvez travailler avec les données filtrées ici, comme les résumer ou en extraire des résultats spécifiques
MsgBox "Filtrage terminé. Les données avec une note >= " & filterCriteria & " sont maintenant affichées."
End Sub
Explication du Code
- Configuration de la feuille de calcul : La variable ws définit la feuille de calcul à utiliser (changez « Sheet1 » par le nom de votre feuille réelle).
- Trouver la dernière ligne : La variable lastRow calcule dynamiquement la dernière ligne de la colonne A. Cela garantit que la plage s’ajuste automatiquement à chaque ajout ou suppression de lignes.
- Définition de la plage dynamique : La plage rng est créée de la cellule A1 à la dernière ligne (lastRow) dans la colonne C. Cela signifie que la plage s’ajustera automatiquement en fonction du nombre de lignes dans votre jeu de données.
- Plage nommée dynamique : La ligne ThisWorkbook.Names.Add crée une plage nommée dynamique (facultatif). Cela permet de référencer la plage par son nom (« NegotiationSkillsRange ») ailleurs dans votre classeur.
- Entrée utilisateur pour le critère de filtrage : La fonction InputBox demande à l’utilisateur de saisir une valeur numérique pour filtrer les évaluations des compétences. Le filtre est appliqué à la colonne B (Évaluations des compétences).
- Application du filtre : Le filtre est appliqué à l’aide de la méthode AutoFilter. Il filtre les valeurs de la colonne B qui sont supérieures ou égales à la valeur entrée par l’utilisateur.
- Affichage des résultats : Après l’application du filtre, une boîte de message apparaît, confirmant que le filtrage a été effectué.
Comment ça fonctionne en pratique
- Lorsque vous exécutez la macro CreateDynamicRangeAndFilter, elle crée une plage dynamique basée sur les données des colonnes A à C.
- Ensuite, elle vous demande un critère de filtrage (par exemple, une note de 3 ou plus).
- Les données sont ensuite filtrées en fonction de la note saisie, et seules les lignes avec des notes supérieures ou égales à la valeur spécifiée seront visibles.
Améliorations possibles
- Filtres supplémentaires : Vous pouvez étendre ce code en ajoutant plusieurs critères (par exemple, filtrer par note et par commentaire).
- Graphiques dynamiques : Vous pouvez créer des graphiques basés sur les données filtrées ou la plage dynamique.
- Mise en forme conditionnelle : Vous pouvez ajouter de la mise en forme conditionnelle pour mettre en surbrillance les meilleures compétences en négociation ou niveaux de performance.
Cela devrait vous fournir un système flexible et dynamique pour gérer les données des compétences en négociation dans Excel avec VBA.