Créer une plage dynamique pour les compétences en présentation, Excel VBA

Créer une plage dynamique pour les compétences en présentation, Excel VBA

Voici un code VBA détaillé qui permet de créer une plage dynamique pour les compétences en présentation dans Excel, avec une explication complète en français. 

Étapes pour créer une plage dynamique avec VBA : 

  1. Compréhension des plages dynamiques : Une plage dynamique est une plage de données qui s’ajuste automatiquement lorsque des données sont ajoutées ou supprimées. En VBA, vous pouvez créer des plages dynamiques en utilisant des objets comme Range, UsedRange ou Cells. 
  2. Créer une plage dynamique pour les compétences en présentation : Imaginons que vous ayez un tableau dans Excel avec des colonnes telles que : 
  • A : Nom de la personne 
  • B : Niveau de compétence 
  • C : Score 

Vous souhaitez que cette plage soit dynamique et que les données changent en fonction du contenu des cellules. Par exemple, cette plage dynamique peut être utilisée pour des graphiques ou des présentations. 

Code VBA pour créer une plage dynamique : 

Voici un exemple de code VBA qui crée une plage dynamique, incluant les entêtes et les données, qui s’ajuste automatiquement en fonction des changements dans le tableau. 

Sub CreerPlageDynamique() 
    ' Déclarer les variables 
    Dim ws As Worksheet 
    Dim derniereLigne As Long 
    Dim plageDynamique As Range 
    Dim celluleDebut As Range 
    ' Définir la feuille de calcul où les données sont stockées 
    Set ws = ThisWorkbook.Sheets("Compétences en Présentation") 
    ' Trouver la dernière ligne de données dans la colonne A (ajustez la référence de colonne si nécessaire) 
    derniereLigne = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row 
    ' Définir la cellule de départ pour la plage (cellule d'en-tête) 
    Set celluleDebut = ws.Range("A1") 
    ' Créer la plage dynamique (de A1 à la dernière ligne de la colonne C) 
    Set plageDynamique = ws.Range(celluleDebut, ws.Cells(derniereLigne, "C")) 
    ' Optionnel : Nommer la plage dynamique pour pouvoir y faire référence plus facilement dans les formules ou graphiques 
    ThisWorkbook.Names.Add Name:="PlageDynamique", RefersTo:=plageDynamique 
    ' Exemple d'utilisation de la plage dynamique dans un graphique (juste pour démonstration) 
    ' Supposons qu'il y ait déjà un graphique nommé "Graphique1" sur la feuille, mettre à jour sa plage de données 
    ws.ChartObjects("Graphique1").Chart.SetSourceData Source:=plageDynamique 
    ' Optionnel : Afficher une boîte de message avec l'adresse de la plage dynamique 
    MsgBox "Plage dynamique créée : " & plageDynamique.Address 
End Sub

Explication du Code : 

1. Configuration de la feuille de calcul

  • La variable ws fait référence à la feuille où les données sont stockées. Vous pouvez modifier « Compétences en Présentation » en fonction du nom de votre feuille. 

2. Calcul de la dernière ligne

  • La ligne derniereLigne = ws.Cells(ws.Rows.Count, "A").End(xlUp).Rowpermet de trouver la dernière ligne contenant des données dans la colonne A. Cela permet à la plage dynamique de s’ajuster automatiquement à la quantité de données. 

3. Définition de la plage dynamique

  • La plage est définie de la cellule A1 (l’entête) à la dernière ligne de la colonne C (Score). Vous pouvez ajuster cela en fonction de vos colonnes. 

4. Nommer la plage

  • Avec la ligne ThisWorkbook.Names.Add Name:="PlageDynamique", RefersTo:=plageDynamique, nous donnons un nom à la plage dynamique, ce qui facilite son utilisation dans d’autres éléments comme des graphiques ou des formules. 

5. Plage dynamique dans un graphique

  • L’exemple suppose qu’il existe déjà un graphique nommé « Graphique1 » sur la feuille. La plage dynamique est alors liée à ce graphique afin qu’il se mette à jour automatiquement lorsque la plage change. 

6. Affichage de l’adresse de la plage

  • Une boîte de message affiche l’adresse de la plage dynamique pour confirmer sa création. 

Concepts avancés pour les plages dynamiques : 

Si vous avez besoin de techniques encore plus avancées (par exemple pour des structures de données plus complexes ou des graphiques interactifs), vous pouvez utiliser les éléments suivants : 

  • Plages dynamiques pour plusieurs colonnes : Vous pouvez étendre la plage pour inclure plusieurs colonnes. Par exemple, ws.Range(« A1:C » & derniereLigne) pour inclure toute la table. 
  • Ajustement automatique selon des critères spécifiques : Créez une plage dynamique qui s’ajuste en fonction de conditions comme des cellules non vides ou une correspondance de texte spécifique. Vous pouvez utiliser des formules Excel comme COUNTA pour compter seulement les lignes non vides ou faire des boucles pour vérifier des conditions. 
  • Interface avec PowerPoint : Vous pouvez aussi envoyer cette plage dynamique directement dans une présentation PowerPoint, où elle se met à jour automatiquement lorsque les données dans Excel changent. 

Exemple d’utilisation de la plage dynamique dans PowerPoint : 

Pour envoyer les données vers PowerPoint, vous pouvez ajouter une nouvelle procédure qui utilise la plage dynamique et génère des diapositives avec les données mises à jour. 

Sub ExporterVersPowerPoint() 
    ' Configurer l'application PowerPoint 
    Dim pptApp As Object 
    Dim pptPres As Object 
    Dim slide As Object 
    Dim indexSlide As Integer 
    Dim plageDynamique As Range 
    Dim ligne As Range 
    Dim cellule As Range 
    ' Créer une instance de PowerPoint 
    On Error Resume Next 
    Set pptApp = CreateObject("PowerPoint.Application") 
    On Error GoTo 0 
    pptApp.Visible = True 
    Set pptPres = pptApp.Presentations.Add 
    ' Définir la plage dynamique depuis le code précédent 
    Set plageDynamique = ThisWorkbook.Sheets("Compétences en Présentation").Range("A1:C" & derniereLigne) 
    ' Créer une nouvelle diapositive pour chaque ligne de données 
    indexSlide = 1 
    For Each ligne In plageDynamique.Rows 
        Set slide = pptPres.Slides.Add(indexSlide, 1) ' 1 représente ppLayoutText 
        slide.Shapes(1).TextFrame.TextRange.Text = "Nom : " & ligne.Cells(1, 1).Value 
        slide.Shapes(2).TextFrame.TextRange.Text = "Niveau de compétence : " & ligne.Cells(1, 2).Value & vbCrLf & _ "Score : " & ligne.Cells(1, 3).Value 
        indexSlide = indexSlide + 1 
    Next ligne 
End Sub

Conclusion : 

Ce code vous permet de créer une plage dynamique dans Excel qui s’ajuste automatiquement en fonction des données. C’est particulièrement utile lorsque le jeu de données évolue (ajout ou suppression de lignes). L’intégration avec PowerPoint permet de générer des présentations dynamiques qui se mettent à jour lorsque les données changent dans Excel. 

Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x