procedure trop grande

BIL boud

XLDnaute Occasionnel
Bonjour,

jai mis un code (modif de code de ODVJ) qui est très long , du coup a l'excution de cet dernier jai un message d'erreur "procedure trop grande"

je ne sais pas comment y proceder sachant que le code est une repetition identique avec une petite modification au niveau de range

le code que jai mis est disponible dans le fichier joint (module 1)

merci d'avance
 

Pièces jointes

  • DOC2_Essais.xlsm
    226 KB · Affichages: 14

bof

XLDnaute Occasionnel
Bonjour,
Ce code ne semble pas cohérent. Essaie de joindre le code d'origine (si ça fonctionnait) parce que là... Il y a de forte chance que tu n'aies pas beaucoup d'autre réponse.
Déjà la première condition commence par :
VB:
if ActiveCell.Activate and...
Alors ça ne donne pas bien envie d'aller plus loin !
A+
 

BIL boud

XLDnaute Occasionnel
Bonjour,
Ce code ne semble pas cohérent. Essaie de joindre le code d'origine (si ça fonctionnait) parce que là... Il y a de forte chance que tu n'aies pas beaucoup d'autre réponse.
Déjà la première condition commence par :
VB:
if ActiveCell.Activate and...
Alors ça ne donne pas bien envie d'aller plus loin !
A+

Bonjour

le code fonctionne tres bien sauf que il est tres tres long

jai mis plusieurs procedure pour que ca marche (jai pas le choix sauf si ya une possibilite de reduire le code )

le conctionnement du code :

dans la feuille "ESSAI_QPDC" ya des tableaux
en double cliquant sur une case on recuperer les activities lieés a cette cases la

le code je lai mis dans le module 1
et le code de double clique est dans la feuille "ESSAI_QPDC"

ce que je cherche est de reduire le code si c possible par une boucle ou autre chose


je vous remercie d'avance
 

Pièces jointes

  • DOC2_Essais.xlsm
    245.8 KB · Affichages: 3

bof

XLDnaute Occasionnel
Bonsoir,
Je pense que sur ce 2ème document il y a une erreur. (Si j'ai bien compris la finalité de la macro...)
En effet si je double clic sur la cellule B2, la macro ne renvoie que 2 lignes.

Or j'en compte 3 :
2 sur Planification_EOBD_matrices et 1 sur Planification_Safety_N1_diagt

Ma correction : (Je ne me suis interessé qu'à la Sub columns_2()
VB:
Option Explicit
Sub columns_2()
Dim Arr, ArrT, b(1 To 4), i%, Ws%, iRL%, kC%, kT%
Columns("H:M").ClearContents
Arr = Application.Transpose(Worksheets("NEW_VB_config").Range("O2:O12")) 'nom des 11 feuilles
For i = 2 To 3000
   For Ws = 1 To 11                 'boucle sur les feuilles
      If Arr(Ws) <> "" Then
         iRL = Range("H" & Rows.Count).End(xlUp).Row + 1
         With Worksheets(Arr(Ws))
            If .Range("AO" & i).Value <> "" Then
               ArrT = .Range("A1:F1").Value: .Range("H1:M1") = ArrT
               For kT = 1 To 97 Step 6
                  If Range("A" & kT) = .Range("a" & i) Then
                     Select Case ActiveCell.Row Mod 6
                     Case 2 To 5
                        For kC = 1 To 6
                           Cells(iRL, kC + 7) = .Cells(i, kC)
                        Next
                     End Select
                  End If
                Next
            End If
         End With
      End If
   Next Ws
Next i
End Sub

Si c'est Ok, YAPUKA faire le même travail pour les 3 autres colonnes...

Pour continuer et vérifier ce que j'ai fait j'ai besoin de 2 tableaux complets avec de données qui renvoient quelque chose si je teste les 4 colonnes (BCDE) donc avec des données colonnes AO sur plusieurs feuilles. Eviter des données trop jumelles faites par copier /Coller si les 2 tableaux sont identiques et les colonnes aussi, ça ne peut pas mettre en évidence les erreurs...
A+
 
Dernière édition:

BIL boud

XLDnaute Occasionnel
Bonsoir,
Je pense que sur ce 2ème document il y a une erreur. (Si j'ai bien compris la finalité de la macro...)
En effet si je double clic sur la cellule B2, la macro ne renvoie que 2 lignes.

Or j'en compte 3 :
2 sur Planification_EOBD_matrices et 1 sur Planification_Safety_N1_diagt

Ma correction : (Je ne me suis interessé qu'à la Sub columns_2()
VB:
Option Explicit
Sub columns_2()
Dim Arr, ArrT, b(1 To 4), i%, Ws%, iRL%, kC%, kT%
Columns("H:M").ClearContents
Arr = Application.Transpose(Worksheets("NEW_VB_config").Range("O2:O12")) 'nom des 11 feuilles
For i = 2 To 3000
   For Ws = 1 To 11                 'boucle sur les feuilles
      If Arr(Ws) <> "" Then
         iRL = Range("H" & Rows.Count).End(xlUp).Row + 1
         With Worksheets(Arr(Ws))
            If .Range("AO" & i).Value <> "" Then
               ArrT = .Range("A1:F1").Value: .Range("H1:M1") = ArrT
               For kT = 1 To 97 Step 6
                  If Range("A" & kT) = .Range("a" & i) Then
                     Select Case ActiveCell.Row Mod 6
                     Case 2 To 5
                        For kC = 1 To 6
                           Cells(iRL, kC + 7) = .Cells(i, kC)
                        Next
                     End Select
                  End If
                Next
            End If
         End With
      End If
   Next Ws
Next i
End Sub

Si c'est Ok, YAPUKA faire le même travail pour les 3 autres colonnes...

Pour continuer et vérifier ce que j'ai fait j'ai besoin de 2 tableaux complets avec de données qui renvoient quelque chose si je teste les 4 colonnes (BCDE) donc avec des données colonnes AO sur plusieurs feuilles. Eviter des données trop jumelles faites par copier /Coller si les 2 tableaux sont identiques et les colonnes aussi, ça ne peut pas mettre en évidence les erreurs...
A+
Bonjour

merci pour votre reponse

au double clique sur b2 on vas pas recuperer 2 ligne, mais on va recuperer toute les lignes dont leurs range a1 = range(a1) du tableau et dont le premier chifre de leurs cellule range("ao") = 1

si on clique sur b3 c le mm principe mais on va recuperer tt les lignes dont le premier chifre de la cellule (ao )= 2
pour b4 mm chose mais on recupere tt les lignes odnt le premier chifre de la cellule (AO) =3
b5 on recupere te les lignes dont le premier chifre dans la cellule (AO) =4

si on clique sur c2 on recupere tt les ligne dont leur range("a1") = range("a1") de la feuille de visualisation et dont le DEUXIEM chiffre de la cellule (A1)=1
..
.
.


c ca l'objectif de la macro

je vais tester votre code

merci encore pour votre reponse

je vais mettre au desous le fichier au complet
le fichier 2 est au complet sauf que ya pas tt les activites
je vais les mettre dans ce 3 fichier
 

BIL boud

XLDnaute Occasionnel
voici le fichier au complet , pour les cellule ao dans chque feuille vous pouvez mettre les un nombre de 4 chifre de 1 a 4 exemple '1111' 1234, 3411 pour tester le programme

merci encore
 

Pièces jointes

  • DOC2_Essais.xlsm
    243.2 KB · Affichages: 2

BIL boud

XLDnaute Occasionnel
Bonjour,,
Ton fichier modifié.
A+

Bonjour

ca fonctionne et au mm temps ca fonctionne pas

le problem est quand je double clic par exemple sur range b2 je veux recupere tt les activities dont le premier chiffre de range ao est =1 (et ca ce le fait super bien) mais aussi il ne doit recuperer que les activities dont range(a1)=range(a1) (nom de projet) de la feuilles de synthese

et si je passe au 2 eme tabelau mm principe mais il recupere que les activities dont range(a1) des feuilles = range("a7") de la feuille de synthese

ainisi de suit pour les autres tableaux

sauf que dans votre programme quand je double clic sur b8 il recupere quand mm les activities liee a range (a1) alors que je veux recuperer que les activtie lilee a range(a7)

mm chose pour les autres tableaux

je vous remercie pour le temps que vous avez consacre pour mon fichiers
je sais que je vous ai trop embêter
je m'excuse
 

Discussions similaires

Réponses
9
Affichages
865

Statistiques des forums

Discussions
312 189
Messages
2 086 031
Membres
103 101
dernier inscrit
CyberAlex93