Opérations entre cellules avec boucles imbriquées

Bonjour à tous,

Je suis novice en VBA et je n'ai pas trouvé la solution à mon problème sur Google, ni sur le forum (peut-être n'ai-je pas utilisé les bons mots-clés ?). Je vais essayer d'expliquer clairement mon problème. Si mon sauveur se trouve parmi vous, je vous serai éternellement reconnaissante !

Je possède plusieurs fichiers de données où le nombre de lignes et le nombre de colonnes peuvent varier (sinon ce n'est pas marrant ! ) et où les colonnes ne sont pas toujours dans le même ordre.

Le classeur possède 2 feuilles : La feuille source (où je vais coller mes données à chaque fois) et la feuille où je souhaite réaliser mes calculs.

La première ligne correspond à des noms d'éléments chimique, sous la forme *X où X est l'espèce en question.

Les lignes suivantes sont des nombres (les concentrations des éléments).

J'ai déjà réussi à faire en sorte que la colonne *H soit systématiquement la dernière colonne dans la feuille "Source", quelque soit la taille du tableau, car j'ai besoin de ses concentrations dans mon calcul. J'ai pensé que ce serait plus simple si elle était toujours à la même place.

Je souhaite maintenant faire des opérations entre mes cellules. Pour chaque espèce chimique (chaque colonne) sauf H et pour chaque ligne j'aimerais faire :

Concentration Calculée = Concentration source * 1/(1-0.01*Concentration de H)

J'ai déjà essayé de coder ceci, mais je me heurte à un problème.

n = Sheets("Source").Range("C" & Rows.Count).End(xlUp).Row  'Dernière ligne du fichier Source
m = Sheets("Source").Cells(1, 256).End(xlToLeft).Column     'Dernière colonne du fichier Source
    For i = 2 To n
        For j = 4 To m - 1
        Sheets("Calcul").Cells(i, j + 1) = Sheets("Source").Cells(i, j) * (1 / (1 - 0.01 * Sheets("Source").Cells(i, 17)))
        Next j
    Next i

• Mon problème : *H ne sera pas toujours la 17ème colonne puisque mon nombre de colonnes change selon le fichier source. Y a-t-il un moyen de faire directement appel aux cellules de la dernière colonne ? Ou alors à celles qui contiennent *H en entête ?

Je vous joint un morceau de mon excel.

Merci à tous ceux qui prendront le temps de se pencher sur mon problème !

Bonjour,

Pas certain de bien comprendre

  • dans ton fichier, les deux lignes pour initialiser les variables n et m ne sont pas présentes !?
  • si tu supprimes la colonne du 'X', puis que tu utilises la colonne 17 ... que contient cette dernière?

Bonjour et bienvenu sur le forum,

Un premier essai, vous convient-il ?

Cordialement

Bonjour,

Une nouvelle proposition à étudier.

Cdlt.

Bonjour,

Pas certain de bien comprendre

  • dans ton fichier, les deux lignes pour initialiser les variables n et m ne sont pas présentes !?
  • si tu supprimes la colonne du 'X', puis que tu utilises la colonne 17 ... que contient cette dernière?

Bonjour

Effectivement, je me suis plantée dans le copier-coller en faisant mon excel pour n et m ! J'avais modifié le fichier joint quand je m'en étais rendue compte.

Pour répondre à ta question, la colonne X est supprimée dans la feuille "Calcul" mais pas dans la feuille "Source", donc la colonne 17 de la feuille "Source" contiendra toujours *H (Enfin ça c'est en théorie, il est possible que j'aie codé ça n'importe comment )

Mille fois merci à Jean-Eric et besoin_d_aide, pour votre efficacité et votre rapidité, c'est exactement ce que je voulais faire ! Je vais éplucher un peu plus vos codes histoire de mieux comprendre.

Je me suis également rendue compte que je pouvais mettre tout simplement Sheets("Source").Cells(i, m) au lieu de Sheets("Source").Cells(i, 17) pour adapter selon la taille du fichier source. Je suis un peu une quiche

Merci encore à tous pour votre aide !

Rechercher des sujets similaires à "operations entre boucles imbriquees"