Afficher un tableau à partir du module dans une feuille rapidement

Bonjour ,

Je suis débutant en VBA et nouveau sur le forum. J'ai fais une macro grâce à chatgpt. Mais elle est très lente car je pense que le code encode cellule par cellule sur la feuille excel.

Pouvez vous m'aider pour que le tableau s'affiche directement ? Merci.

Voici le module crée :

Sub AfficherInsky()


' Demande à l'utilisateur d'entrer la valeur pour la "center ligne"
Dim centerLine As Single
Dim centerlineparabole As Single

centerLine = InputBox("Veuillez insérer la valeur de la center ligne de l'antenne")
centerlineparabole = InputBox("Veuillez insérer la centerline de la parabole")

' Déclare un tableau 2D avec les données à afficher, y compris les calculs avec centerLine
Dim donnees As Variant
donnees = Array( _
Array("Insky", "", 1, "Sigfox LNAC", centerLine + 0.8, 0), _
Array("Insky", "", 1, "Sigfox Tigerbox", centerLine + 0.8, 0), _
Array("Insky", "", 1, "Sigfox support 80/100", centerLine + 0.8, 0), _
Array("Insky", "", 3, "ParaØ0,3m", centerlineparabole, 0), _
Array("Insky", "", 1, "Sigfox omni 80cm", centerLine + 0.8, 0), _
Array("Insky", "", 3, "RRU4418", centerLine + 0.6, 0), _
Array("Insky", "", 3, "RRU8863", centerLine + 0.6, 0), _
Array("Insky", "", 3, "PTTA", 0, centerLine + 0.1), _
Array("Insky", "", 3, "FTTA", 0, centerLine - 0.17), _
Array("Insky", "", 3, "RRU4486", centerLine - 0.4, 0), _
Array("Insky", "", 3, "RRU4485", centerLine - 0.4, 0), _
Array("Insky", "", 1, "800442802", centerLine, 0), _
Array("Insky", "", 2, "800442802(arr)", centerLine, 0), _
Array("Insky", "", 3, "STSP_U-350", 0, centerLine - 2.5) _
)

Dim i As Integer, j As Integer
Dim startCell As Range

' Définit la cellule de départ comme la cellule active
Set startCell = ActiveCell

startCell.Resize(UBound(donnees) + 1, UBound(donnees(0)) + 1).Value = donnees
' Remplit les cellules à partir de la cellule active avec les données du tableau
For i = LBound(donnees) To UBound(donnees)
For j = LBound(donnees(i)) To UBound(donnees(i))
startCell.Offset(i, j).Value = donnees(i)(j)
Next j
Next i

End Sub

Bonjour,

Malheureusement votre tableau n'est pas un "vrai" 2D array, donc on ne peut pas l'écrire d'un coup dans Excel. Par contre on peut l'écrire ligne par ligne.

Ci-après une proposition d'optimisation, dites-moi si le résultat est suffisant.

Sub AfficherInsky()

  ' Demande � l'utilisateur d'entrer la valeur pour la "center ligne"
  Dim centerLine As Single
  Dim centerlineparabole As Single

  centerLine = InputBox("Veuillez ins�rer la valeur de la center ligne de l'antenne")
  centerlineparabole = InputBox("Veuillez ins�rer la centerline de la parabole")

  ' D�clare un tableau 2D avec les donn�es � afficher, y compris les calculs avec centerLine
  Dim donnees As Variant
  donnees = Array( _
            Array("Insky", "", 1, "Sigfox LNAC", centerLine + 0.8, 0), _
            Array("Insky", "", 1, "Sigfox Tigerbox", centerLine + 0.8, 0), _
            Array("Insky", "", 1, "Sigfox support 80/100", centerLine + 0.8, 0), _
            Array("Insky", "", 3, "Para�0,3m", centerlineparabole, 0), _
            Array("Insky", "", 1, "Sigfox omni 80cm", centerLine + 0.8, 0), _
            Array("Insky", "", 3, "RRU4418", centerLine + 0.6, 0), _
            Array("Insky", "", 3, "RRU8863", centerLine + 0.6, 0), _
            Array("Insky", "", 3, "PTTA", 0, centerLine + 0.1), _
            Array("Insky", "", 3, "FTTA", 0, centerLine - 0.17), _
            Array("Insky", "", 3, "RRU4486", centerLine - 0.4, 0), _
            Array("Insky", "", 3, "RRU4485", centerLine - 0.4, 0), _
            Array("Insky", "", 1, "800442802", centerLine, 0), _
            Array("Insky", "", 2, "800442802(arr)", centerLine, 0), _
            Array("Insky", "", 3, "STSP_U-350", 0, centerLine - 2.5) _
            )

  Dim calcMode
  calcMode = Application.Calculation
  Application.Calculation = xlManual
  Application.ScreenUpdating = False

  Dim i As Long
  For i = LBound(donnees) To UBound(donnees)
   ActiveCell.Offset(i, 0).Resize(1, 1 + UBound(donnees(i))).Value = donnees(i)
  Next i

  Application.ScreenUpdating = True
  Application.Calculation = calcMode
End Sub

Bonjour,

Cela fonctionne je vous remercie

Passez une bonne journée

Rechercher des sujets similaires à "afficher tableau partir module feuille rapidement"