IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

abréger une parti du macro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 1
    Par défaut abréger une parti du macro
    Bonjour,
    je vous présente mon macro et j'aimerai raccourcir les lignes en bleu car en réalité je possède plus de 200 tableaux donc je vous laisse imaginer la taille du macro!!
    si une personne aurai la solution je serai le plus heureux

    Cordialement jérôme.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub cherche()
    tablo1 = Sheets("Feuil1").Range("B6:F" & Sheets("Feuil1").Range("B65536").End(xlUp).Row)
    tablo2 = Sheets("Feuil1").Range("H6:L" & Sheets("Feuil1").Range("H65536").End(xlUp).Row)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    For Each cel In Sheets("Feuil2").Range("C7:E7")
     For n = LBound(tablo1, 1) To UBound(tablo1, 1)
       If tablo1(n, 1) = cel.Value Then
         tot = tot + tablo1(n, 5)
        End If
     Next n
     For n = LBound(tablo2, 1) To UBound(tablo2, 1)
       If tablo2(n, 1) = cel.Value Then
         tot = tot + tablo2(n, 5)
        End If
     Next n
     cel.Offset(1, 0) = tot
     tot = 0
    Next
    End Sub

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonsoir

    tout dabors pour plus de lisibilité de ton code mes le entre balise code(le #)dans la barre d'outil

    ensuite en regardant ton code il y a quelque questions

    regardons un peu ca les questions seront en commentaire dans ton code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Sub cherche()
     
    'ici on prend les colonnes b a f mais la derniere ligne pris en compte c'est la 
     
    'derniere en "colonne "b" est volontaire et si la b,c d ,e ou f est plus longue 'que fait 'on?????
    tablo1 = Sheets("Feuil1").Range("B6:F" & Sheets("Feuil1").Range("B65536").End(xlUp).Row)
    'meme question ici 
    tablo2 = Sheets("Feuil1").Range("H6:L" & Sheets("Feuil1").Range("H65536").End(xlUp).Row)
    For Each cel In Sheets("Feuil2").Range("C7:E7")
    'sachant que une colection commence toujour par "0"lbound est il bien utile????
    'et sachant que "c7:e7 " ne comporte pas le meme nombre de cllulle que la 'reference des deux "tablo" il va te manquer des cellules pour pouvoir 'comparer les données
     
    'repond deja a ces question et on verra pour le reste
    For n = LBound(tablo1, 1) To UBound(tablo1, 1)
     
    If tablo1(n, 1) = cel.Value Then
    tot = tot + tablo1(n, 5)
    End If
    Next n
    For n = LBound(tablo2, 1) To UBound(tablo2, 1)
    If tablo2(n, 1) = cel.Value Then
    tot = tot + tablo2(n, 5)
    End If
    Next n
    cel.Offset(1, 0) = tot
    tot = 0
    Next
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 317
    Par défaut
    Bonjour,

    Bonjour Patrick,

    La 1ère question qui me vient à l'esprit, quelle version d'Excel utilises-tu?

    A la 1ère lecture de ton code, c'est du 2003 (utilisation du range B65536), mais au vu de ton énoncé (plus de 200 tableaux de 5 colonnes, soit plus de 1000 colonnes), sûrement Excel 2007 ou ultérieur.

    On pourrait faire une boucle sur la création de tableau, en fonction du nombre de colonnes, et ne travailler que sur 1 tableau.

    Un peu plus de précisions nous aiderait un peu plus

    Bon courage

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonsoir mapeh

    qu'a tu bu ce soir? je ne suis pas l'auteur du post


    hihihi au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 317
    Par défaut
    Re-,

    Je n'ai rien bu, j'ai juste voulu séparer les formules de politesse....

    Bonne soirée

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    ok mapeh mais tel que tu a ecris c'est a moi que tu a repondu

    bon pour revenir au sujet
    il me viens une idée toute simple en ce qui concerne le "b65536"

    pour evité de devoir modifier la macro pour 2007 ou 2003
    utiliser pluto "rows.count" tout simplement


    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

Discussions similaires

  1. macro qui redirige vers une partie d'un feuillet
    Par Faradeorn dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/01/2011, 13h03
  2. [XL-2003] J'ai une partie de macro qui marche pas
    Par Alexandra 01 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/10/2010, 14h29
  3. [XL-2003] exécuter une partie d'une macro
    Par djoumusic dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 28/12/2009, 11h21
  4. [XL-2003] Macro pour exporter une partie de feuille
    Par Nico123 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/11/2009, 11h19
  5. Macro : Copier une partie de la cellule
    Par jeanjean0403 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 31/08/2007, 12h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo