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 SubBonjour,
Cela fonctionne je vous remercie
Passez une bonne journée