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 :

Automatisation à répétition - Rien ne se passe


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Autre
    Inscrit en
    Novembre 2022
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Novembre 2022
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Automatisation à répétition - Rien ne se passe
    Bien le bonsoir ! Pour commencer, sachez que je ne connaissais absolument pas l'existence du vba avant ce vendredi et j'ai découvert ce week-end quelques notions à travers pas mal de tuto et de cours. J'ai alors fait ce 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
     
     
    Dim l As Integer
     l = 3
    Dim i As Integer
      For i = 1 To 5:
        If IsEmpty(Cells(l, 4)) = False Then
          Sheets("Données").Activate
          Range("Cells(l,4):Cells(l,6)").Select
          Selection.Copy
              If IsEmpty(Cells(l, 14)) = False Then
                Dim d As String
                    d = Cells(l, 14).Value
                Sheets("Tabl").Activate
                Dim c As Integer
                  c = Application.Match(d, Sheets("Tabl").Range(Cells(l, l)), 0)
                Dim cs As Integer
                  cs = 3
                While IsEmpty(Cells(c - 1, cs)) = False
                  cs = cs + 1
                Wend
                Cells(c - 1, cs).PasteSpecial Paste:=xlPasteValues
                l = l + 1
               End If
        End If
    Next
    Il est censé récupérer une information sur la ligne l dans un tableau spécifié et ensuite les coller à un endroit spécifique qu'il aurait trouvé, à la base le code devrait faire ceci (en phrase) :


    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
     
    l = Première ligne étudiée # Ici 3
     
    Boucle qui se répète x fois: # x sera choisis lors de l'écriture
    * Revenir sur la feuille " Données "
    * Si le contenu des colonnes D E F à la ligne l n'est pas vide :
         - Sélectionne et copie le contenu des cellules dans les colonnes D E F à la ligne l
         - Si le contenu à la ligne l et colonne N n'est pas vide :   
               . Aller en ligne l et colonne N et enregistrer le contenu comme d
               . Venir sur la feuille " Tabl "
               . Si d est sur la ligne 1 
                   ° Chercher en ligne 1 une correspondance avec la date d et noter la colonne c
                   ° Aller en c-1
                   ° Descendre jusqu'une case vide
                   ° Coller le contenu des cellules copier
                   ° Ajouter 1 à l
                   ° Revenir à la boucle
               Sinon :
               . Ajouter 1 à l
               . Revenir à la boucle
         Sinon :
         - Ajouter 1 à l
         - Revenir à la boucle
    Sinon :
    * Ajouter 1 à l
    * Revenir à la boucle
    mais lorsque je lance la macro, rien ne se passe...Si quelqu'un pourrais fournir de l'aide ça serais avec plaisir !

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 380
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 380
    Points : 2 007
    Points
    2 007
    Par défaut
    Salut,

    Malheureusement, les cours que tu as lu ne sont pas bon (je ne te jette pas la pierre, aucun n'est bon).
    Un bon code VBA n'a pas besoin d'activer ni sélectionner quoi que ce soit, c'est lent et ça fait ressembler ton classeur à un sapin de Noël.
    Utilises des références explicites sur les feuilles / cellules, plutôt que des références implicites.

    Par contre, il va falloir expliquer ton besoin plus précisément.
    Si je résume: "Le code doit récupérer quelque chose, quelque part et le coller ailleurs."
    Ca ne vas pas nous aider.

    Également, un échantillon de données nous serait utile.

    Concernant ton code:
    Trouves de meilleurs noms de variables (qu'ils soient clair et compréhensibles).
    Tu as une erreur à la ligne 7, tu ne vérifies que si la colonne D est vide, alors que ton énoncé spécifie les cellules D, E et F.
    Pour vérifier qu'une plage de cellules est vide, il te faut tester chaque cellule individuellement (délègue cela à une fonction).
    La suite, je ne penses pas que ça respecte l'énoncé non plus.

  3. #3
    Membre éclairé Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 413
    Points : 725
    Points
    725
    Par défaut
    Salut c'est confus 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
    l = Première ligne étudiée # Ici 3 
    Boucle qui se répète x fois: # x sera choisis lors de l'écriture
    * Revenir sur la feuille " Données " ' // Inutile je pense
    * Si le contenu des colonnes D E F à la ligne l n'est pas vide : ' // Donc on vérifie qu'une des trois colonne n'est pas vide sur la ligne 1 ?
         - Sélectionne et copie le contenu des cellules dans les colonnes D E F à la ligne l ' // OK, là je commence à être perdu... tu veux dire :  ....D E F de la ligne 1 ?
         - Si le contenu à la ligne l et colonne N n'est pas vide : 
               . Aller en ligne l et colonne N et enregistrer le contenu comme d ' // Donc d = Range("N1").Value
               . Venir sur la feuille " Tabl " ' // Inutile ici
               . Si d est sur la ligne 1 ' // On cherche d sur la ligne 1 ?
                   ° Chercher en ligne 1 un correspondance avec la date d et noter la colonne c ' // Ici c'est redondant...
                   ° Aller en c-1 ' // Donc en colonne "B"
                   ° Descendre jusqu'une case vide ' // OK Utiliser plutôt un tableau structuré ce sera plus facile
                   ° Coller le contenu des cellules copier 
                   ° Ajouter 1 à l
                   ° Revenir à la boucle
               Sinon : ' // BON LA JE N'IRAIS PAS PLUS LOIN :?
               . Ajouter 1 à l
               . Revenir à la boucle
         Sinon :
         - Ajouter 1 à l
         - Revenir à la boucle
    Sinon :
    * Ajouter 1 à l * Revenir à la boucle
    J'ai perdu le fil dès les premières instructions.
    Désolé, Si est une condition et pas une boucle, dis plutôt FAIRE ... JUSQU'A, ou FAIRE ... TANT QUE. mais le mieux c'est d'avoir un classeur anonymisé.

Discussions similaires

  1. Export WAR, rien ne se passe
    Par hatifnatte dans le forum Eclipse Java
    Réponses: 9
    Dernier message: 28/07/2006, 12h10
  2. RollOver rien ne se passe
    Par hisy dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/07/2006, 09h53
  3. Rien ne se passe :s
    Par razord dans le forum SDL
    Réponses: 8
    Dernier message: 30/04/2006, 20h18
  4. [vb.net][requete]rien ne se passe
    Par Alex35 dans le forum VB.NET
    Réponses: 3
    Dernier message: 23/11/2005, 13h00
  5. [FLASH MX2004] Rien ne se passe qd j'execute mon code
    Par adilou1981 dans le forum Flash
    Réponses: 2
    Dernier message: 27/07/2005, 23h31

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