Test de cellule à (double) intervalle régulier

beja

XLDnaute Nouveau
Bonjour à tous,

Je rencontre des difficultés sur l'adaptation d'une macro + formule, et sollicite l'avis d'experts.

Ce que je cherche à faire (exemple) : j'ai une feuille appelée "test" qui héberge des tableaux saisis via userform.
dans un soucis d'affichage, j'essaye d'ajouter un bout de code pour qu'au bout de 5 tableaux on "revienne à la ligne" et on recommence une série de 5 tableaux. Un seul tableau à la fois est saisi avec la macro.

j'ai tenté de bidouiller une fonction pour renvoyer la plage d'une cellule dans "la macro qui effectue le reporting du tableau" dans la feuille "test" (appelons la "toto")
Je ne vous cache pas que le code ne fonctionne pas :confused:, mais j'espère que le point qui me bloque sera plus compréhensible, et qu'une résolution didactique puisse se présenter.

Précision : le premier tableau démarre en A1 (dimension 24 lignes X 5 colonnes)

Function RechercheTabTest() As Range
Dim Ligne As Integer
Dim Colonne As Integer
With Worksheets("test")
For Ligne = 1 To 240 Step 24
For Colonne = 1 To 50 Step 5
If .Cells(Ligne, Colonne) = "" Then
Set RechercheTabTest = .Cells(Ligne, Colonne)
Exit Function
End If
Next Colonne
Next Ligne
End With
End Function

==> comme le tableau fait une dimension de 24 lignes par 5 colonnes, j'ai tenté d'adapter une fonction pour tester les cellules de chaque première cellule potentielle d'un tableau hébergé, et dès qu'on tombe sur une cellule vide, on doit renvoyer la plage de cette cellule dans la macro ci-après :

Sub toto()

[..] <== partie indépendante de la macro qui fonctionne

Dim MyCell As Range

Set MyCell = RechercheTabTest()
MyCell.Activate

[...] <==== la fin du reporting qui fonctionne très bien

end sub


Je cherche à comprendre où je fais une erreur, afin d'apprendre à réaliser ce type d'instruction.

Merci par avance aux contributeurs.

Beja
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Test de cellule à (double) intervalle régulier

Bonjour et bienvenue

Il manque quelque chose dans ton message, beja
(Un petit coup de relecture de la charte du forum devrait t'en dire plus ;) )

Donc en attendant ce quelque chose fort utile pour tenter d’aider ceux qui comme toi on un souci "excelien" , je vais m’en griller une.
 

beja

XLDnaute Nouveau
Re : Test de cellule à (double) intervalle régulier

Bonjour,

je suis vraiment désolé, mais après une nouvelle lecture attentive de la charte, et pointage des différentes préconisations, je ne vois pas ce qu'il manque.

si c'est la version d'excel, j'ai indiqué dans le titre que ça concerne tout type (bon soyons raisonnables, à partir d'excel 2003) car la macro va servir à plusieurs utilisateurs n'ayant pas la même version


Sinon.... je sèche. Sans indication supplémentaire, je n'aurai plus qu'à "passer me chemin"

Cordialement,
 

Dull

XLDnaute Barbatruc
Re : Test de cellule à (double) intervalle régulier

Salut beja et Bienvenue:), l'agrafe:), le Furum

Je pense que Staple1600 voulais parler du point c du paragraphe 3 - La Rédaction de la Question

Ce forum offre la possibilité unique de joindre des fichiers, profitez de cette merveilleuse facilité

Bonne Journée
 

beja

XLDnaute Nouveau
Re : Test de cellule à (double) intervalle régulier

Bonjour,

je ne pensais pas qu'un fichier était nécessaire !

en voici un modèle le plus simplifié qu'il soit :

- une feuille "test" avec un exemple du positionnement des tableaux (il y aura à terme environ 300 tableaux répartis sur 60 rangées de 5)
- j'ai simplifié la taille des tableaux ==> ils font 19 lignes par 4 colonnes
- la fonction est dans le module 1, la macro dans le module2
- j'ai colorié en jaune la position "type" des cellules que la macro doit tester dans l'ordre : "si la première cellule n'est pas vide, on teste la suivante, etc etc.... dès qu'on arrive sur une cellule vide, on la selectionne et on arrête de tester

(aie c'est limite pas clair mon explication....)


Espérant avoir répondu à vos attentes,

Cordialement,
 

Pièces jointes

  • PosTab.xls
    37.5 KB · Affichages: 38

laurent950

XLDnaute Barbatruc
Re : Test de cellule à (double) intervalle régulier

Bonjour,

Ce code est tiré par les cheveux mais il fonctionne, j'ai gardé votre logique

VB:
Sub Position_TabBis()
Set FTest = Worksheets("test")
MyCell = RechercheTabTestBis(FTest)
MsgBox MyCell
FTest.Range(MyCell).Select
Set FTest = Nothing
End Sub
 ---------------------------------------------------------------------------------------------
Function RechercheTabTestBis(ByVal FTest)
Dim Ligne As Integer
Dim Colonne As Integer
        cpt = 0
        For Ligne = 1 To 1050 Step 19
            For Colonne = 1 To 17 Step 4
                If FTest.Cells(Ligne, Colonne) = "" And cpt = CInt(0) Then
                    Pos = FTest.Cells(Ligne, Colonne).Address
                    cpt = 1
                End If
            Next Colonne
        Next Ligne
    RechercheTabTestBis = Pos
End Function

Ps : il y a une régle une fonction renvois toujours un résultat, et si vous avez besoin de revoyer plusieurs résultats c'est l'utilisation d'une Variable Tableau.

Pour une Variable de Type prémitif elle ne peux renvoyer qu'un seul résultat donc le resultat est renvoyé sous cette forme :
RechercheTabTestBis = Pos ici Pos est une variable de Type prémitif

Pour les tableaux dit Variable Tableau elle sont de Type référence est pas besoin de renvoyer comme ci-dessus car c'est une adresse avec des cases aloués (Bon il vous faut bien comprendre)

au plaisir si vous voulais un cours je vous envois un liens trés instructif

Laurent
 
Dernière édition:

beja

XLDnaute Nouveau
Re : Test de cellule à (double) intervalle régulier

Bonjour Laurent,

Merci de t être penche sur la question.
Merci également pour les explications que je ne manquerai pas d intégrer et de comprendre.


J ai rejoint la communauté pour apprendre et un jour peut être savoir à mon tour transmettre.

Aussi je suis effectivement intéressé par le lien que tu me propose.


Je testerai en rentrant à la maison, ta solution, et te dirai ce qu il en est.

Encore merci




Edit : J'ai incorporé la macro dans mon code, et lié ta fonction au reste.
Ca règle parfaitement le point de situation qui me bloquait, je te remercie vivement !
 
Dernière édition:

Discussions similaires

Réponses
5
Affichages
187

Statistiques des forums

Discussions
314 017
Messages
2 104 579
Membres
109 081
dernier inscrit
Vio21