Résolu Plage de recherche variable dans macro VBA

campasc

Nouveau membre
Tout d'abord, Bonjour à tous ceux qui passeront sur ce fil ! :hello:

Je coince sérieusement sur une partie de ma macro... :sweat: :(


J'ai 3 colonnes A, B et C
Ligne 1 les titres
Ligne 2 à N(N variable définie au début de ma macro) :
-Colonne A, des temps en seconde.
-Colonne B, des temps en seconde, qui sont initialement rangés par ordre croissant, MAIS quand la macro travaille ils ne sont plus rangés de la sorte.
-Colonne C, des entiers positifs

Ce que je voudrais faire, c'est définir un plage de cellule qui serait ma plage de recherche initiale ( toute la colonne B de la ligne 2 à N)

Ensuite faire une boucle de i=2 jusqu'à N qui :
Va chercher la plus petite des valeurs des cellules comprises dans la plage de recherche ET entre cellule(2,"B") et cellule (i,-1,"B")(Intersection), par exemple cellule (j,"B")

Si la valeur de la cellule (i,"A") est > à la valeur de la cellule (j,"B"), alors la valeur de la cellule (i,"C") prend la valeur de la cellule (j,"C") ET la cellule (j,"B") est éliminée de la plage de recherche. C'est à dire qu'au i suivant, elle ne sera pas prise en compte lors de la recherche de la plus petite des valeurs.

Sinon la cellule (i,"C") prend la valeur de la cellule (i-1,"C") + 1.

Dans l'idée, je voudrais faire quelque chose du genre :
maplage=Range(Cells(2,"B"),Cells(N,"B"))
Et dans la boucle, redéfinir maplage à chaque fois que nécessaire
maplage= maplage - Range (Cells(j,"B")
Il n'est apparemment pas possible de faire de telles opérations sur les Range, mais si quelqu'un a une idée je suis preneur ! :bounce:

Merci.

CampaSC
 

campasc

Nouveau membre
Ci-joint un fichier qui montre la procédure que ferait la macro que j'essaie de construire. En espérant que ce sera plus clair comme ça !




CampaSC
 

oozenot

Expert
Meilleure réponse
Salut CampaSC,

tout d'abord publie un début de code sur le forum
(attention a la publication et l'utilisation des bonnes balises cf Règlement)

Ensuite pour te "balader" dans une plage regarde du côté de la fonction .Offset()

Pour ton problème pourquoi ne pas tout simplement supprimer le contenu de la cellule initiale ?
si cela non plus ne te convient pas alors fait une copie de ta feuille initiale (au sein de la macro) et travaille sur cette copie. Puis tu la détruit à la fin de l’exécution de ta macro.

EN espérant que cela puisse t'aider.

A te lire.
 

campasc

Nouveau membre


Bonjour Oozenot,

Problème résolu, merci d'avoir laisser ton avis quand même. Le problème c'est que je ne pouvais justement pas supprimer le contenu des cellules car elles servaient à calculer d'autres cellules.
Finalement, à chaque fois que j'utilise je la colorie en gris, et ma plage de recherche ne contient que les cellules sans remplissage.9a fonctionne.

CampaSC
 

oozenot

Expert
salut CampaSC,

si le problème est résolu pourrais tu publier ton code final (ou donner ta solution pour que cela soit utile a la communauté)

Puis marque le sujet en résolu.

:)
 

zeb

Modérateur
Salut,

On choisit la meilleure des réponses en cliquant sur le bouton "Elire meilleure réponse". C'est en image dans le règlement !
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 098
Messages
6 717 058
Membres
1 586 285
Dernier membre
LeFront
Partager cette page
Haut