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 :

J'ai une macro a modifier et une autre à créer qui peut me les coter ?


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2015
    Messages : 8
    Points : 7
    Points
    7
    Par défaut J'ai une macro a modifier et une autre à créer qui peut me les coter ?
    Bonjour à tous et toutes !!


    Voila mon pb j'ai besoin de modifier une macro VBA et d'en créer une .....j'ai découvert le VBA il y a 3 jours et je ne m'en sort pas ....et j'ai besoin que ces macros soit opérationnelles le plus vite possible .... parce que ça bloque tout le reste de mon travail de cette semaine ....:-((((

    Est-ce que qq'un peut m'aider et me dire combien cela me couterait pour modifier la première macro et créer la seconde ??? je n'ai plus d'autres solutions maintenant ....voici le détail de ce dont j'ai besoin :


    J’ai un onglet « Matrice Principale » dans laquelle il y a des lignes de données (AD/AE/AF/AG) à partir de la ligne 10. Ces lignes de données seront complétées au cours du temps.
    Ensuite je veux envoyer ces lignes de données dans différents onglets numérotés de 1 à 27. J’ai donc mis en place 27 colonnes de « B à AB » me permettant de mettre un chiffre 1 ou rien, si il y a 1 il faut envoyer les Données des colonnes (AD/AE/AF/AG), dans l’onglet correspondant à celle ou se trouve le chiffre 1.
    Une fois ces données envoyé dans les onglets respectif, je vais MANUELLEMENT trier ces données, c'est-à-dire que la ligne de données 4 de l’onglet 10 sera placé après la ligne de donnée 7 par exemple. Le point important c’est qu’il n’y a pas moyen d’automatiser ce tri….

    J’ai une Macro VBA qui est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Remplir()
    Dim i As Byte, dl&, p As Range
    With Sheets("Matrice principale")
        dl = .Cells(Rows.Count, "B").End(3).Row
        On Error Resume Next
        Set p = .Range("B10:AB" & dl).SpecialCells(xlCellTypeConstants, 5)
        For Each c In p
        Next        If c = 1 Then
                .Cells(c.Row, "AD").Resize(, 4).Copy Sheets(CStr(.Cells(8, c.Column))).Cells(Rows.Count, "B").End(3).Offset(1, 0)
            End If
     
    End With
    End Sub

    Je dois modifier cette macro pour :

    1/ Délimiter une zone d’analyse de l’onglet « Matrice Principale », par exemple de ‘‘B10 à AB1000 ’’, parce que tel qu’est rédigé ma Macro VBA…si je mets des « 1 » au milieu du tableau alors qu’il n’y a aucun « 1 » auparavant (sur les 100 premières lignes par exemple) il s’arrête avant d’ avoir trouvé les « 1 » du milieu du tableau à priori…


    2/ Cette macro envoie des lignes de données de l’onglet « Matrice Principale » vers 27 autres onglets. Le problème c’est que si j’ajoute une ligne de donnée à mon onglet « Matrice Principale » et que je re-lance la macro « Remplir » il va remettre une seconde fois les données dans chacun des onglets ….et donc je me retrouve avec 2 fois les données dans chaque onglet…. Merdoummm !!!
    Pour solutionner ce problème il faudrait que :
    - si il y a un "1" dans la colonne 25 et la ligne 150 de ma matrice principale, avant d'affecter les données de la ligne 150 colonne AD/AE/AF/AG dans l'onglet 25, la Macro devra vérifier que la donnée de la colonne AF de la Matrice Principale (ligne 150) n'est pas présente qq part dans la colonne D de l'onglet 25. Là la vérification s'arrête lorsqu'il n'y a plus de donnée dans la colonne G de l'onglet 25.

    Si dans l'onglet 25, pas de donnée de la colonne AF de la Matrice Principale (ligne 150) alors on ajoute les données AD/AE/AF/AG de la ligne 150 de la Matrice Principale à la suite du tableau de cet Onglet (sans perturber l'ordre des autres données).

    Si dans l'onglet 25, il y a la donnée AF de la matrice principale (ligne 150), alors on vérifie aussi que la donnée AG de la ligne 150 de la matrice principale est également présente dans l'onglet 25 :
    • si il est également présent alors on ne fait rien (c'est à dire on n'ajoute pas les données de la ligne 150)
    • si il n'est pas présent alors on ajoute la ligne de donnée 150 de la matrice principale dans cet onglet 25



    Je suis obligé de procéder comme cela parce que dès fois mes données en AF sont similaires et dès fois je n'ai pas de donnée en AG.....

    donc je dois passer par un double test ....
    Mais comment traduire tout ça et l’intégrer correctement dans ma Macro « Remplir » ???



    3/ Enfin si au cours du temps, je souhaite enlever dans la « Matrice Principale » le «1» pour l’onglet 27 de la ligne de donnée 56, ce que j’aimerais c’est qu’il y ait une vérification inverse….. Au travers éventuellement d’une Macro VBA distincte de « Mise à Jour » que je ne vais exécuter que de temps en temps et qui va tester/ vérifier inversement pour chaque onglet numéroté de 1 à 27 si :

    Pour l'onglet 1 :
    Ligne 3 : A partir des données B3/C3/D3/E3 de l’onglet 1, on va chercher dans la «Matrice Principale» la Ligne « x » ou les données B3/C3/D3/E3 de l’onglet 1 sont égales aux données des colonnes AD/AE/AF/AG. Une fois cette Ligne « x » identifiée, alors je vais voir la colonne B (colonne correspondant à l’onglet 1) de la Ligne "x" si c’est bien écrit « 1 » :

    • si « Oui » je ne fais rien et je passe à la vérification de la ligne 4,
    • si « NON » alors j’efface les données B3/C3/D3/E3 de la ligne 3 de l’onglet 1 et je remonte les données qui sont en dessous d’une ligne. Parce que si il n’y a pas de « 1 » ça veut dire qu’une donnée de la matrice principale a été modifié et qu’il faut faire une mise à jour, qui va consister à effacer la ligne de donnée vérifiée de l’onglet 1, et à remonte les données qui sont en-dessous d’une ligne (pour avoir un tableau uniforme).
    • Et le traitement de vérification / mise à jour pour l’Onglet s’arrête lorsque les données B3=rien et C3=rien et D3=rien et E3 = rien
    • On passe alors à l’onglet 2 etc …. Jusqu’au dernier onglet N° 27.





    Merci pour votre aide et éventuel conseil de plateforme pouvant me faire ça ....bonne journée à tous et toutes !!!Test 3 -03MAR2015.xlsm

  2. #2
    Membre averti
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 478
    Points : 442
    Points
    442
    Par défaut
    Test 3 -03MAR2015.xlsm

    Voila c'est modifié.

    Tu as écris un charabia pour en gros dire de régénérer la macro a chaque fois en effaçant les anciennes données....
    Ta macro s’arrêtait à 134 car ta valeur de ligne maximum était générée uniquement sur la colonne B et non sur l'ensemble de ta plage d'utilisation.

    Cdt

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2015
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Remerciements pour Ashireon !!!!
    Bonjour à tous et toutes,


    Par ce petit message je voulais remercier tout particulièrement Ashireon qui m'a donné un sacré coup de main pour me dépatouiller de macros VBA récalcitrantes !!

    Ashireon est bien plus qu'un Membre Eclairé !! c'est une Lumière à lui tout seul !!!!

    Merci encore Ashireon pour ta très précieuse aide !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Toutes versions] Passer la main à une macro VBA à partir d'une macro Excel4
    Par AgentF13 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 25/04/2014, 23h19
  2. [XL-2010] Création d'une macro événement feuille depuis une macro VBA
    Par phoenellion dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/03/2013, 12h57
  3. [XL-2000] Créer un fichier à partir d'une macro contenant lui même une macro
    Par nicogau18 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/07/2010, 16h05
  4. arréter une macro et initialiser par une macro
    Par potili2 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/10/2007, 16h44
  5. [Macro]Mise à jour d'une table à l'aide d'une macro
    Par Jean-Luc80 dans le forum VBA Access
    Réponses: 2
    Dernier message: 12/04/2007, 19h59

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