Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA prochaine cellule vide dans une ensemble de ranges isolés

chifounou

XLDnaute Occasionnel
Bonjour à tous, je sèche sur un cas trop compliqué pour moi actuellement. En apprentissage mais pas encore assez autonome.

Mon objectif, sélectionner la prochaine cellule vide en scannant un ensemble de ranges isolés.
En effet, cela concerne des plages de cellules côte à côte mais espacées... donc il y a des cellules entre à sauter et ne pas scanner.
Protocole exact : le scan doit partir de la première cellule dans le coin en haut à gauche (B5 dans ma feuille) puis se faire de gauche à droite, en esquivant les cellules hors des cadres noirs, puis de haut en bas ligne par ligne (une fois arrivé tout à droite).

Pour illustrer, j'ai créé une feuille avec 4 cas (horizontaux, délimités par un séparateur), case verte cellule active de départ, case rouge cellule à sélectionner.

Merci à vous pour me décoincer.

PS : pièce jointe supprimée, voir plus bas pour la feuille d'illustration remplaçante
 

Pièces jointes

  • canevas.xlsm
    15.5 KB · Affichages: 34
Dernière modification par un modérateur:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : VBA prochaine cellule vide dans une ensemble de ranges isolés

Bonjour chifounou,

Un essai dans le fichier joint.

  • sélectionner la plage
  • cliquer sur le bouton test

Edit : mal lu le PB posé, ne répond pas à la question

Les groupes dans une plage sont ils toujours disposés de la même façon ?
C'est à dire un groupe de 4x3 suivi d'une zone de 4x2 vide suivie d'un groupe de 4x2 suivi d'une zone de 4x3 vide suivie d'un groupe de 4x2.

La colonne de départ (B) est-elle toujours la même ?
 

Pièces jointes

  • chifounou-canevas-v1.xlsm
    18.3 KB · Affichages: 35
Dernière édition:

chifounou

XLDnaute Occasionnel
Re : VBA prochaine cellule vide dans une ensemble de ranges isolés

Bonjour mapomme,

Merci de prendre le temps de t'y atteler

Dans ma feuille finale, les trois plages exactes seront D5:F1004,J5:K1004,R5:S1004 soit pas tout à fait l'illustration.
(au niveau des deux espaces, il y aura donc 3 colonnes à sauter, puis 6, avant retour à la ligne suivante)

La case de départ sera D5.

Hormis cela, rien n'est prévu de bouger !

Merci encore
 
Dernière modification par un modérateur:

Paf

XLDnaute Barbatruc
Re : VBA prochaine cellule vide dans une ensemble de ranges isolés

Bonjour chifounou, mapomme

Protocole exact : le scan doit partir de la première cellule dans le coin en haut à gauche
Pour illustrer, j'ai créé une feuille avec 4 cas (horizontaux, délimités par un séparateur), case verte cellule active de départ, case rouge cellule à sélectionner.

Pas bien saisi la cellule de départ :
- soit c'est la première cellule dans le coin en haut à gauche
- soit c'est la cellule verte mais quelle est la logique de sa position?
* pour les cas 2 et 3 c'est la première cellule vide (en cherchant de gauche à droite puis de haut en bas)
* pour les cas 1 et 4 c'est la cellule vide qui suit la première cellule vide

A+
 

chifounou

XLDnaute Occasionnel
Re : VBA prochaine cellule vide dans une ensemble de ranges isolés

Bonjour Paf,

J'ai du mal expliquer alors. Mes excuses, je reprends.

Il y a deux choses :
- la cellule initiale (vide ou pas en réalité, ce n'est pas le propos), verte, qui correspond à la cellule active/sélectionnée où se trouve le curseur souris, au début, avant de cliquer sur le bouton macro
- ensuite, doit démarrer la recherche de cellule vide (de gauche à droite puis de haut en bas ligne après ligne) toutefois cette recherche doit s'initier quoiqu'il advienne (indépendamment du positionnement de la cellule verte) depuis la première case du coin supérieur gauche (case B5 pour le premier cas, case B11 pour le second cas, etc), puis de gauche à droite, bas en haut...

Je réalise un peu tard que j'aurais donc dû remplir la case verte d'une valeur quelconque pour ne pas prêter à confusion dans les cas 2 et 3 (afin que celle-ci ne soit pas prise en compte lors de la recherche) ...chose corrigée dans le "canevas2" que j'inclus maintenant
 

Pièces jointes

  • canevas2.xlsm
    15.5 KB · Affichages: 36
Dernière modification par un modérateur:

Paf

XLDnaute Barbatruc
Re : VBA prochaine cellule vide dans une ensemble de ranges isolés

Re,

donc on ne tient pas compte de la case verte.

a priori , largement basé sur la propôsition de mapomme:
Code:
Sub test()
 Dim ListCol, i As Integer, j As Integer

 ListCol = Array(2, 3, 4, 7, 8, 12, 13) '( 4, 5, 6, 10, 11,18,19) pour la version finale
 With Worksheets("Feuil1")
 For i = 5 To 8  ' 5 To 1004 pour la version finale
    For j = LBound(ListCol) To UBound(ListCol)
        If IsEmpty(.Cells(i, ListCol(j))) Then
            .Cells(i, ListCol(j)).Select
            Exit Sub
        End If
    Next
 Next
 End With
End Sub

la macro ne traite que le premier tableau, les autres n'étant là que pour exemple(?)

A+
 

Discussions similaires

Réponses
4
Affichages
605
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…