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 :

Macro boucle update data jusque fin tableau


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Avril 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Avril 2018
    Messages : 4
    Par défaut Macro boucle update data jusque fin tableau
    Bonjour,

    J'ai bricolé une macro pour mettre à jour des fichier du personnel. Pour ce faire il copie le matricule dans un tableau pour le coller dans un autre tableau avec formule de vlookup qui va donner les connexions, pauses, et autres de l'employer. Ces informations sont ensuite copiées / collées valeur sur le fichier du personnel correspondant au nom à coté du matricule dans le tableau où il va le chercher.

    La macro est assez imparfaite car pour l'instant je dois lui dire à chaque fois où aller copier le matricule suivant (en rouge) au lieu de lui dire de prendre le sivant dans la cellule du dessous et terminer en tapant update sur la même ligne dans une cellule du tableau (en orange). La macro est donc très volumineuse, j'ai du employer un macro d'ensemble qui lance des macros succèssiblement car l'opération doit se répéter pour bien faire +- 300 fois (300 matricules). J'aimerais faire une boucle jusqu'à ce qu'il arrive à une cellule vide (la fin du tableau).

    Voici le 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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    Sub UPDATE_Accent_1()
    
        Sheets("Payroll UPDATE").Select
        Range("A4").Select
        Selection.Copy
        Sheets("bco UPDATE").Select
        Range("A1").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Range("C9:T372").Select
        Selection.Copy
        Range("B1").Select
        Workbooks.Open Filename:= _
            Range("A6") _
            , UpdateLinks:=0
        ActiveWindow.Visible = False
        Windows(Range("B3") & "_" & Range("A2") & "_" & Range("A3") & "_Interview.xlsx").Visible = True
        Sheets("LISTING Aanwezigheid 2018").Select
        Range("J62").Select
        ActiveWindow.ScrollRow = 1
        Range("C9").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Range("D11").Select
        Application.CutCopyMode = False
        ActiveWorkbook.Save
        ActiveWindow.Close
        Sheets("Payroll UPDATE").Select
        Range("D4").Select
        ActiveCell.FormulaR1C1 = "UPDATED"
        
        Range("A5").Select
        Selection.Copy
        Sheets("bco UPDATE").Select
        Range("A1").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Range("C9:T372").Select
        Selection.Copy
        Range("B1").Select
        Workbooks.Open Filename:= _
            Range("A6") _
            , UpdateLinks:=0
        ActiveWindow.Visible = False
        Windows(Range("B3") & "_" & Range("A2") & "_" & Range("A3") & "_Interview.xlsx").Visible = True
        Sheets("LISTING Aanwezigheid 2018").Select
        Range("J62").Select
        ActiveWindow.ScrollRow = 1
        Range("C9").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Range("D11").Select
        Application.CutCopyMode = False
        ActiveWorkbook.Save
        ActiveWindow.Close
        Sheets("Payroll UPDATE").Select
        Range("D5").Select
        ActiveCell.FormulaR1C1 = "UPDATED"
    etc...


    D'avance merci beaucoup.

  2. #2
    Membre Expert Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 671
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 671
    Par défaut
    Votre code a besoin d'être amélioré; pour vous permettre de le lancer avec un seul code générique, je l'ai adapté ainsi (à tester):
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    Sub UPDATE_Accent_1()
     
    Dim j As Integer: j = 0 'new
    Application.ScreenUpdating = False
    On Error GoTo 150
     
     Do While True
        Sheets("Payroll UPDATE").Select
        Range("A4").Select 'variable
        ActiveCell.Offset(j, 0).Activate 'new
        If ActiveCell.Offset(j, 0) = "" Then Exit Do
        Selection.Copy
        Sheets("bco UPDATE").Select
        Range("A1").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
     
        Range("C9:T372").Select
        Selection.Copy
        Range("B1").Select
        Workbooks.Open Filename:=Range("A6"), UpdateLinks:=0
        ActiveWindow.Visible = False
        Windows(Range("B3") & "_" & Range("A2") & "_" & Range("A3") & "_Interview.xlsx").Visible = True
        Sheets("LISTING Aanwezigheid 2018").Select
        Range("J62").Select
        ActiveWindow.ScrollRow = 1
        Range("C9").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
     
        Range("D11").Select
        Application.CutCopyMode = False
        ActiveWorkbook.Save
        ActiveWindow.Close
        Sheets("Payroll UPDATE").Select
        Range("D4").Select 'variable
        ActiveCell.Offset(j, 0).Activate 'new
        ActiveCell.FormulaR1C1 = "UPDATED"
        j = j + 1
     Loop
        MsgBox "Traitement terminé !", vbOKOnly, "Update Accent"
    150     Application.ScreenUpdating = True
    End Sub

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Avril 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Avril 2018
    Messages : 4
    Par défaut
    Un grand merci!

    Cela fonctionne patiellement à la perfection.

    Il s'arret à A27 sans aucune explication et affiche malgré tout le message "Traitement terminé".
    J'ai vérifié le fichier de l'employé en question et aucun soucis qui expliqerait l'arrêt de la macro, même si de toute manière avec la première version sans code générique il parvenait à mettre à jour.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Avril 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Avril 2018
    Messages : 4
    Par défaut
    J'ai changé le matricule de A28 pour voir si le problème vient de la fiche du personnel mais la macro s'arrête toujours au même endroit.

  5. #5
    Membre Expert Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 733
    Par défaut
    Bonjour, je me suis permis de rajouter un Message qui peut donner une information sur l'erreur. testez le?

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Sub UPDATE_Accent_1() 
    Dim j As Integer: j = 0 'new
    Application.ScreenUpdating = False
    On Error GoTo 150
     
     Do While True
        Sheets("Payroll UPDATE").Select
        Range("A4").Select 'variable
        ActiveCell.Offset(j, 0).Activate 'new
        If ActiveCell.Offset(j, 0) = "" Then 
           MsgBox "A " & j & " est egal nothing"  'Si le message Box s'affiche ca signifie que la cellule est égale à rien, raison de la sortie de la boucle.
           Exit Do
        End If
        Selection.Copy
        Sheets("bco UPDATE").Select
        Range("A1").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
     
        Range("C9:T372").Select
        Selection.Copy
        Range("B1").Select
        Workbooks.Open Filename:=Range("A6"), UpdateLinks:=0
        ActiveWindow.Visible = False
        Windows(Range("B3") & "_" & Range("A2") & "_" & Range("A3") & "_Interview.xlsx").Visible = True
        Sheets("LISTING Aanwezigheid 2018").Select
        Range("J62").Select
        ActiveWindow.ScrollRow = 1
        Range("C9").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
     
        Range("D11").Select
        Application.CutCopyMode = False
        ActiveWorkbook.Save
        ActiveWindow.Close
        Sheets("Payroll UPDATE").Select
        Range("D4").Select 'variable
        ActiveCell.Offset(j, 0).Activate 'new
        ActiveCell.FormulaR1C1 = "UPDATED"
        j = j + 1
     Loop
        MsgBox "Traitement terminé !", vbOKOnly, "Update Accent"
    150     Application.ScreenUpdating = True
    End Sub
    Cordialement

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Avril 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Avril 2018
    Messages : 4
    Par défaut
    Un résultat des plus métaphysique! Il annonce "A24 égla nothing" alors qu'il atteint toujours A27 et le valide par "UPDATED"

  7. #7
    Membre Expert Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 733
    Par défaut
    Bonsoir,
    N'y aurait-il pas par hasard, une ou des lignes cachés ou du moins dont la hauteur serait = 0 ou 0,001
    et donc une cellule qui serait égale a rien?
    Bizarre, bizarre, vous avez dit bizarre!
    Cordialement

  8. #8
    Membre Expert Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 733
    Par défaut
    Re bonsoir,

    Citation Envoyé par dmbenjamin Voir le message
    Un résultat des plus métaphysique! Il annonce "A24 égal nothing" alors qu'il atteint toujours A27 et le valide par "UPDATED"
    Rien d'étonnant en fait ! En effet, A24, le 24 n'est pas le numéro de ligne, mais la valeur de j soit le numéro de boucle. Comme la boucle part de la ligne 4 , 24+ 4 =28 .
    Il y a un problème sur la cellule A27 ou A28 elle doit donner une réponse "nothing" ?

    Cordialement

Discussions similaires

  1. macro boucle remplir un tableau
    Par cmagn dans le forum Macro
    Réponses: 10
    Dernier message: 22/11/2016, 18h46
  2. [MFC] Update data
    Par chronos dans le forum MFC
    Réponses: 4
    Dernier message: 06/08/2007, 21h10
  3. [AJAX] Update automatique de champs tableau
    Par cic_flo dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 23/10/2006, 17h59
  4. [débutant] Ma boucle se bloque à la fin du tableau
    Par renaud26 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/10/2006, 20h05
  5. [VB.net] Boucle for next avec un tableau
    Par grand_prophete dans le forum Windows Forms
    Réponses: 4
    Dernier message: 31/05/2006, 12h08

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