Bonjour,
Je cherche à cumuler en VBA les fonctions "If" et "For Each cell..." pour améliorer grandement une macro sur un des fichiers que j'utilise.
J'ai programmé il y a quelques années un enchainement de fonctions de type :
Sub Structure()
'
' Structure Macro
' Macro qui sert à copier la même structure sur tous les tronçons
'
If (Sheets("Détail réseau").Cells(16, 1) = "") Then
Sheets("Détail réseau").Cells(16, 9) = ""
Else
Sheets("Détail réseau").Cells(16, 9) = Sheets("Calcul").Cells(151, 2)
End If
If (Sheets("Détail réseau").Cells(17, 1) = "") Then
Sheets("Détail réseau").Cells(17, 9) = ""
Else
Sheets("Détail réseau").Cells(17, 9) = Sheets("Calcul").Cells(151, 2)
End If
Bon là j'ai raccourcis le nombre de cellules, car j'ai 40 lignes environ et excel met très longtemps à effectuer tous ces tests...
Mon idée serait de traduire toutes ces lignes par quelque chose de type :
Pour chacune des cellules dans [C1:C10] ; (ou sur chacune de [A1:A10] ?)
Si [A] = 0 ; alors [C] = 0 ; Sinon [C] = [D]
Après quelques recherches ça se traduirait très certainement par la fonction "For each cell in" suivie de "If ; Then ; Else"
Ma fonction pourrait alors tenir en quelques lignes et le temps de traitement en serait surement grandement amélioré.
Si quelqu'un peut m'aider sur ce sujet... je lui en serais grandement reconnaissant ^^'
(et j'en profiterai pour utiliser la recherche par "Range" plutot que par "Cells", plus pratique à s'y retrouver... mais ça je sais déjà le faire)
Et juste au cas où, étant donné mon fichier beaucoup plus complet que cette seule fonction, je ne peux pas me permettre de simplement remplir les formules "=si(.....)" dans la feuille de calcul
Je cherche à cumuler en VBA les fonctions "If" et "For Each cell..." pour améliorer grandement une macro sur un des fichiers que j'utilise.
J'ai programmé il y a quelques années un enchainement de fonctions de type :
Sub Structure()
'
' Structure Macro
' Macro qui sert à copier la même structure sur tous les tronçons
'
If (Sheets("Détail réseau").Cells(16, 1) = "") Then
Sheets("Détail réseau").Cells(16, 9) = ""
Else
Sheets("Détail réseau").Cells(16, 9) = Sheets("Calcul").Cells(151, 2)
End If
If (Sheets("Détail réseau").Cells(17, 1) = "") Then
Sheets("Détail réseau").Cells(17, 9) = ""
Else
Sheets("Détail réseau").Cells(17, 9) = Sheets("Calcul").Cells(151, 2)
End If
Bon là j'ai raccourcis le nombre de cellules, car j'ai 40 lignes environ et excel met très longtemps à effectuer tous ces tests...
Mon idée serait de traduire toutes ces lignes par quelque chose de type :
Pour chacune des cellules dans [C1:C10] ; (ou sur chacune de [A1:A10] ?)
Si [A] = 0 ; alors [C] = 0 ; Sinon [C] = [D]
Après quelques recherches ça se traduirait très certainement par la fonction "For each cell in" suivie de "If ; Then ; Else"
Ma fonction pourrait alors tenir en quelques lignes et le temps de traitement en serait surement grandement amélioré.
Si quelqu'un peut m'aider sur ce sujet... je lui en serais grandement reconnaissant ^^'
(et j'en profiterai pour utiliser la recherche par "Range" plutot que par "Cells", plus pratique à s'y retrouver... mais ça je sais déjà le faire)
Et juste au cas où, étant donné mon fichier beaucoup plus complet que cette seule fonction, je ne peux pas me permettre de simplement remplir les formules "=si(.....)" dans la feuille de calcul