[VBA] Calcul avec conditions surune autre cellule

Bonjour,

Je me permets d'ouvrir un nouveau sujet pour exposer mon problème un petit peu plus précisément.

Je dispose d'un tableau de données très grand (35000 lignes) comportant deux colonnes : des dates et une valeur de mesure.

Le pas de temps entre deux mesures n'est pas régulier (malheureusement).

Il y a régulièrement des périodes plus ou moins importantes durant lesquelles la mesure vaut 0. Mon objectif serait de calculer la durée de chacun de ces intervalles, soit une différence entre la date de la "dernière" cellule vide et la "première" de chaque période où la mesure vaut 0.

Je pense que ce n'est vraiment pas sorcier mais je n'ai pas touché à VBA depuis des lustres et j'ai oublié le peu de choses que j'y connaissais

Merci à tous pour votre aide,

Bonjour et bienvenue sur le forum

Pour avoir une proposition, il serait utile que tu fournisses le fichier.

Bye !

Bonjour !

Effectivement je me suis fait la même réflexion à l'instant. Le fichier était trop gros, je l'ai donc hébergé en externe : https://www.cjoint.com/c/EABnI7HrXDJ

Si ça peut vous aider, je peux aussi créer une copie avec moins de lignes pour pouvoir l'héberger directement sur le forum, je ferai la modif sur ma version après !

Merci à toi !

Voilà, dans le doute, j'ai extrait ici les 500 premières lignes uniquement.

Encore merci !

7chroniquebis.xlsx (15.22 Ko)

Un essai à tester. Te convient-il ?

Bye !

C'est exactement ça, merci beaucoup !

J'abuse un peu pour un petit détail supplémentaire : je dois maintenant créer un tableau pour classer les périodes "nulles", avec deux colonnes (date et durée). Pourrais-tu m'aiguiller sur la manière de sélectionner uniquement les cellules concernées stp ?

Merci encore !

J'ai essayé les deux codes suivant :

Sub selec()

Dim i As Integer

i = 1

While i < 3192

If Cells(i, 3) <> "" Then

Range ("Cells(i,1):Cells(i,3)")

End If

Wend

End Sub

et

End Sub

Sub selection()

Dim i As Integer

i = 1

NombreLignes = 3192

While i < 3192

If Cells(i, 3) <> "" Then

lignes = lignes & i & ":" & i & ","

End If

i = i + 1

Wend

lignes = Left(lignes, Len(lignes) - 1)

Sheets("Feuil1").Range(lignes).Select

End Sub

Et j'ai à chaque fois une erreur "variable non définie" au niveau de la toute première ligne ( Sub selection() ). Pourrais-tu me dire où est le soucis stp ?

Nouvelle version.

Bye !

C'est parfait !

Merci énormément. Je vais me plonger dans les cours VBA de ce site, c'est quand même assez handicapant de ne pas pouvoir s'en sortir seul pour des petites choses comme ça...

Bonne journée et bonne continuation !

Huevon a écrit :

Et j'ai à chaque fois une erreur "variable non définie" au niveau de la toute première ligne ( Sub selection() ). Pourrais-tu me dire où est le soucis stp ?

Si tout en haut de la feuille macro il est écrit : "Option Explicit'', cela veut dire que tu t'obliges à déclarer tes variables.

Cela peut se faire ainsi, comme par exemple :

Dim ligne , col ,cel

C'est mon cas

On peut être plus précis :

Dim ligne as enteger, col as enteger, cel as range

Et si tu oublies de déclarer une variable, tu as alors le message d'erreur dont tu parles.

OK ?

Bye !

Ah je n'avais jamais rencontré ça encore, ou bien j'ai dû oublier.

Encore merci à toi !

Rechercher des sujets similaires à "vba calcul conditions surune"