Utiliser une variable + Optimisation du code

Résolu/Fermé
makks Messages postés 17 Date d'inscription mercredi 10 février 2016 Statut Membre Dernière intervention 26 février 2016 - Modifié par jordane45 le 10/02/2016 à 17:22
makks Messages postés 17 Date d'inscription mercredi 10 février 2016 Statut Membre Dernière intervention 26 février 2016 - 11 févr. 2016 à 09:19
Bonjour à tous,

Je viens tout juste de commencer le VBA sous excel et j'ai quelques petits problèmes avec mes macros malgrès mes nombreuses lectures, je m'explique :
Je dois réaliser une "automatisation" d'analyse de données, je cherche donc à recopier une formule sur plusieurs colonne avec certains paramètres de cette formule qui bouge comme ceci : (Le code est terriblement moche je trouve mais bon..)
For i = 9 To 20
         Cells(i, 4).Select
         ActiveCell.FormulaR1C1 = "=SUMIFS(Données!C[12],Données!C[10],""AMELIORATION"",Données!C[-1],2010,Données!C,i)"
    Next i
    
    For i = 24 To 35
         Cells(i, 4).Select
         ActiveCell.FormulaR1C1 = "=SUMIFS(Données!C[12],Données!C[10],""AMELIORATION"",Données!C[-1],2011,Données!C,i)"
    Next i
    
    For i = 39 To 50
         Cells(i, 4).Select
         ActiveCell.FormulaR1C1 = "=SUMIFS(Données!C[12],Données!C[10],""AMELIORATION"",Données!C[-1],2012,Données!C,i)"
    Next i


Mon problème est que je n'arrive pas à récupérer ma variable i et qu'il me ressort ça comme du texte dans mes formules alors que je voudrais récupérer la donnée C:9 puis C:10 ect de ma feuille Données,
De plus, mon code est long et vraiment pas optimisé (Toujours 4 d'écart entre les i des différentes boucles) a savoir qu'il y a des boucles jusqu'en 2015, je suis vraiment pas très alaise avec le VBA encore donc si quelqu'un pourrait m'indiquer,
Merci :)

ps: en fait a la base "i" va de 1 à 12 (les douzes mois) mais je n'ai pas réussi à faire deux boucles en une (faire varier i et une autre variable pour mes cellules en même temps) donc je voulais soustraire à postériori pour retomber sur ma bonne valeur. Je ne sais pas ce que ca pourrait donner


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICI

Merci d'y penser dans tes prochains messages.
A voir également:

3 réponses

ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
10 févr. 2016 à 17:34
Bonjour

Il te faut séparer la partie "constante" de la partie "variable"
 f = "=SUMIFS(Données!C[12],Données!C[10],""AMELIORATION"",Données!C[-1],2010,Données!C," & i & ")"
Cells(i, 4).FormulaR1C1 = f


Cdlmnt
1
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
10 févr. 2016 à 17:24
Bonjour,


je n'arrive pas à récupérer ma variable i et qu'il me ressort ça comme du texte dans mes formules


Cela s'appelle la "concaténation" ....


Essayes ceci :

sub test()

dim toto as String

toto = "makks"

' exemple 1
msgbox " Bonjour toto "

'exemple 2
msgbox "Bonjour " & toto

End Sub



A partir de là .. tu seras en mesure de corriger par toi même ton code.
0
makks Messages postés 17 Date d'inscription mercredi 10 février 2016 Statut Membre Dernière intervention 26 février 2016 1
Modifié par makks le 11/02/2016 à 09:21
Vous etes mes héros, merci beaucoup pour votre aide,
J'avais effectivement remarqué que c'était un problème de guillemets et de concaténation mais je ne trouvais pas ou exactement ni comment l'appliquer, maintenant je comprend !
0