Compléter un tableau sur une feuille simplement en activant une macro

Bonjour,

Voici un code que j'ai fait grâce à chatgpt et une astuce d'optimisation de temps de production de macro sur ce site :

Sub AfficherInsky()

Application.ScreenUpdating = False
' 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

Application.ScreenUpdating = True 'Facultatif
End Sub

Voici le résultats :

image

Le résultat est très rapide lorsque j'active la macro sur une feuille vierge. Mais quand je l'active sur un classeur rempli de feuilles et de macros , le processus prend jusqu'à 1 minute.

La question est : est ce qu'on peut stocker ces valeurs dans le press papier en appuyant sur la macro pour ensuite uniquement faire un CTRL V ? Parce que j'ai remarqué qu'en collant des valeurs le résultats est imédiats.

Ou alors avez vous une solution pour que le résultats s'affiche rapidement ?

Merci

Bonsoir Exactement10,

A priori, je ne vois rien qui cloche dans ta macro. Y aurait-il d’autres feuilles dans ton classeur avec de nombreux calculs qui se font à chaque fois que ta macro rempli une unique cellule ? Si c’est le ca, tu peux encadrer la partie active de ton avec :

        Application.ScreenUpdating = False
        Application.Calculation = xlCalculationManual
        Application.EnableEvents = False

et

        Application.EnableEvents = True
        Application.Calculation = xlCalculationAutomatic
        Application.ScreenUpdating = True

Ça permettra peut-être de résoudre ce ralentissement.

La réponse à ta question est : oui. Mais j'ai essayé l'optimisation , ça ne change pas grand chose, il y a toujours un chargement de plus de 30 secondes.

L'excel est rempli de formules et de macros liés par plusieurs feuilles

Bonjour,

si vous relancez la macro sur X feuilles, vous refaites en effet X fois le calcul. Il est en effet plus malin de copier/coller le résultat.

C’est possible de différentes façons. Si vous voulez copier toute la feuille directement, vous avez Worksheet.Copy method (Excel) | Microsoft Learn qui permet de dupliquer une feuille. Par contre bien évidemment cela vous crée de nouvelles feuilles (comme si vous le faisiez manuellement).

Si vous préférez garder vos feuilles, vous pouvez utiliser quelque chose comme

Feuil1.Cells.Copy

Feuil2.Range(“A1”).PasteSpecial xlPasteAll

Cela vous copie toutes les cellules de la feuille 1 dans la feuille 2. Si vous voulez quelque chose de plus précis vous pouvez joindre un fichier, ou au moins nomer très précisément les feuilles en questions et le processus voulu.

Rechercher des sujets similaires à "completer tableau feuille simplement activant macro"