Actualiser automatiquement Macro
Bonjour a tous
Etant complètement néophyte en vba ; J' ai besoin d ' aide afin d actualiser une macro.
Je vais essayer d'être suffisamment explicite.
j'importe des données d un fichier csv sur ma feuille Excel, grâce à la fonction importer données à partir du texte.
dans cette fonction j'ai coché l option actualiser les données toute les minutes.
La macro fonctionne parfaitement et m'importe mes donnés sur ma feuille et les actualise toute les minutes.
Vu que je ne veux pas la totalité du fichiers csv sur ma feuille Excel ; j ai crée une macro qui m' efface le contenu des lignes que je n'ai pas besoin.
Ma macro fonction aussi parfaitement.
Sub AA()
'
' AA Macro
'
'
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:\Users\R1.csv", Destination:= _
Range("$A$13"))
.Name = "R1C1"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 1
.TextFilePromptOnRefresh = False
.TextFilePlatform = 65001
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileOtherDelimiter = ","
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
Dim c As Range, lig As Long
For lig = 2000 To 1 Step -1
If Left(Cells(lig, 1), 2) = " :" Then Cells(lig, 1).Clear
If Left(Cells(lig, 1), 2) = "op" Then Cells(lig, 1).Clear
If Left(Cells(lig, 1), 2) = "co" Then Cells(lig, 1).Clear
If Right(Cells(lig, 1), 2) = "e)" Then Cells(lig, 1).Clear
If Left(Cells(lig, 1), 2) = "Cl" Then Cells(lig, 1).Clear
If Left(Cells(lig, 1), 2) = "Ai" Then Cells(lig, 1).Clear
Next lig
End Submon problème est le suivant:
quand ma feuille s actualise automatiquement ma macro qui me permet d effacer le contenu de certains ligne ne se déclenche pas .
comment faire pour que cette macro se déclenche automatiquement dés que les données externe s'actualisent.
merci d avance pour votre aide.
Salut,
Si tu veux déclencher la macro AA depuis une autre macro, tu places l'instruction Call AA ou tout simplement AA dans cet autre macro.
Cordialement.
Bonsoir
merci de m avoir répondu; mais je n'ai pas trop compris votre réponse.
En faite quand je lance la macro AA les données sont bien importés et mais ligne que j ai sélectionné
s'effacent bien . mais c est quand les données ce réactualisent (RefreshPeriod = 1 ) que les lignes que j ai sélectionné réapparaissent et là ne s effacent pas.
cordialement
Bonsoir,
j'y connais rien... mais je donne mon idée
Le refresh ne relance pas la macro, il relance uniquement le refresh....
En clair la macro AA est lancée, l'import de données est faite, un refresh est lancé pour que dans 1 minutes l'importation recommence et ceci ainsi de suite (c'est en mémoire), ensuite lors du premier lancement de la sub AA la partie d'effacement est effectuée, puis la macro s'arrête.
En mémoire reste le refrshe qui 1 minutes plus tard les données sont rafraichies, mais la partie d'effacement n'est plus lancée... car AA est arrêtée.
L'astuce si c'est comme cela que cela se passe ? peut être lancer une macro effacement lors de la detection d'un refresh ou d'un changement de valeur sur la feuille :
Private Sub Worksheet_Change(ByVal Target As Range)
call effacement()
End SubAvec la sub affacement :
Sub effacement()
Application.EnableEvents = False
Dim c As Range, lig As Long
For lig = 2000 To 1 Step -1
If Left(Cells(lig, 1), 2) = " :" Then Cells(lig, 1).Clear
If Left(Cells(lig, 1), 2) = "op" Then Cells(lig, 1).Clear
If Left(Cells(lig, 1), 2) = "co" Then Cells(lig, 1).Clear
If Right(Cells(lig, 1), 2) = "e)" Then Cells(lig, 1).Clear
If Left(Cells(lig, 1), 2) = "Cl" Then Cells(lig, 1).Clear
If Left(Cells(lig, 1), 2) = "Ai" Then Cells(lig, 1).Clear
Next lig
Application.EnableEvents = True
End SubFaut voir...
@ bientôt
LouReeD