Macro

Résolu
louisamiel Messages postés 67 Statut Membre -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J ai un problème sur une macro qui ne s'exécute pas svp. La macro doit archiver les lignes sur l onglet archives selon trois condditions , mais celle-ci ne le fait pas et je n arrive pas à trouver pourquoi.
https://www.cjoint.com/c/GAbp63CrFvP

Sub Archivage()
Application.ScreenUpdating = True
Dim Msg, Style, Title, Response, MyString 'Définition des variables pour le message d'information
Dim Cellule, DerniereLigne, Compteur 'Definition des varaible pour l'archivage des lignes
Msg = "Attention ce programme va archiver automatiquement les lignes soldées, Souhaitez-vous continuer?"    ' Définit le message.
Style = vbYesNo + vbInformation + vbDefaultButton2    ' Définit les boutons.
Title = "Archivage des lignes soldées"    ' Définit le titre.
Response = MsgBox(Msg, Style, Title, Help, Ctxt)
If Response = vbYes Then    ' L'utilisateur a choisi Oui.
    MyString = "Oui" ' Effectue le programme d'archivage
    Sheets("Suivi Sof").Select 'Selectionne l'onglet "Suivi Sof"
    Range("A3").Select 'Se positionne sur la cellule A3
    DerniereLigne = ActiveSheet.UsedRange.Row - 1 + _
                  ActiveSheet.UsedRange.Rows.Count 'Recherche la derniereligne de la zone
  MsgBox "Position dernière ligne : " & DerniereLigne
  For Compteur = DerniereLigne To 3 Step -1
   If Cells(Compteur, 8).Value = "" And _
     Cells(Compteur, 10).Value = "Soldé" And _
     Cells(Compteur, 11).Value = "Soldé" Then
     Sheets("Archives").Select 'Selectionne l'onglet "Archives"
     Rows("2:2").Select 'Selectionne la 2° ligne
     Selection.Insert Shift:=xlDown 'Insére une ligne
     Sheets("Suivi Sof").Select 'Selectionne l'onglet "Suivi Sof"
     Rows(Compteur).Select 'Selcetionne la ligne correpondant à la valeur compteur
     Selection.Copy 'Copie les valeurs de la ligne correspondant à la valeur compteur
     Sheets("Archives").Select 'Selectionne l'onglet "archives"
     Rows("2:2").Select 'Selectionne la 2° ligne qui est vide à ce stade
     Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False 'Colle les valeurs
     Sheets("Suivi Sof").Select 'Selectionne l'onglet "Suivi Sof"
        Application.CutCopyMode = False
     Selection.Delete Shift:=xlUp 'Efface la ligne archivée
  End If
  Next Compteur 'Ligne suivante, intruction liée à for
Else    ' L'utilisateur a choisi Non.
    MyString = "Non" ' Effectue une action.
    Exit Sub 'Sort du programme
End If
Range("A1").Select
End Sub


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.


Merci pour votre aide

6 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    Le code ne s'exécute pas, ou bien ne fait pas ce que tu souhaites?
    0
    1. louisamiel Messages postés 67 Statut Membre
       
      il s execute mais ne fait pas ce que je souhaite.
      il s arrete au message box " position de la derniere ligne" plus rien apres.
      0
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > louisamiel Messages postés 67 Statut Membre
       
      L'as-tu exécuté en pas à pas, pour comprendre ce qu'il fait?
      0
    3. louisamiel Messages postés 67 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      oui
      et elle s arrete car pour la mcro c est fini.
      ca doit etre soit les conditions ou les regles du compteur , enfin je pense..
      0
    4. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > louisamiel Messages postés 67 Statut Membre
       
      en pas à pas, tu peux suivre le résultat de chaque condition, c'est bien cela que tu fais?
      0
    5. louisamiel Messages postés 67 Statut Membre
       
      oui enfin je pense car je suis debutante
      0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    bonjour Louisamiel, yg_be

    Ton code parait bien compliqué !

    si j'ai compris
    tu veux supprimer les lignes répondant à tes 3 conditions dans "suivi sof"et les transférer dans "archives" ?

    si oui
    combien de lignes as tu d'utilisées dans "suivi sof"
    combien de colonnes : A à.... ?
    ou mieux
    Mettre un extrait du classeur ( 50 lignes environ)sans données confidentielles en pièce jointe sur « mon-partage.fr »
    et faire un clic droit-coller le raccourci dans votre message

    Dans l’attente

     Michel
    0
    1. louisamiel Messages postés 67 Statut Membre
       
      Bonjour Michel

      oui


      Actuellement j en ai pas mal de lignes car je n ai pas pu faire fonctionner le code
      les colonnes vont de A à Z

      ci dessous le lien
      https://mon-partage.fr/f/ol5yMe9I/
      merci
      Louisamiel
      0
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Pas mal de lignes: c'est à dire ?
    100, 1000,10000.... (dans suivi sof)

    le nombre de lignes déterminera une méthode traitement ou une autre
     Michel
    0
    1. louisamiel Messages postés 67 Statut Membre
       
      Bonsoir Michel

      Desolée pour la reponse tardive, dans suiv sof c est plus ou moins 1500 Lignes
      0
  4. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Juste une remarque (sauf erreur de ma part):

    Y a un probleme entre les tests et les colonnes a tester
    0
    1. louisamiel Messages postés 67 Statut Membre
       
      oui effectivement je viens de me rendre compte que j ai pas mis les bonnes colonnes pour les conditions
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    re,

    merci F89 pour la remarque

    en attendant une dernière vérif
    Option Explicit
    '-------------------------------------------------------------------
    Sub archiver_si()
    Dim Msg As String, Style, Title As String, Response As Byte, help, ctxt
    Dim Derlig As Integer, Nbre As Integer, Lig As Integer, Cptr As Integer, Transfer
    Dim Ligvid As Integer

    Application.ScreenUpdating = False
    'préparation
    Msg = "Attention ce programme va archiver automatiquement les lignes soldées, Souhaitez-vous continuer?" ' Définit le message.
    Style = vbYesNo + vbInformation + vbDefaultButton2 ' Définit les boutons.
    Title = "Archivage des lignes soldées" ' Définit le titre.
    Response = MsgBox(Msg, Style, Title, help, ctxt)
    If Response = vbNo Then Exit Sub

    With Sheets("suivi sof")
    'crée une colonne furtive permattant de tester les conditions
    Derlig = .Columns("A").Find(what:="*", searchdirection:=xlPrevious).Row
    .Range("AA3:AA" & Derlig).FormulaLocal = "=(ESTVIDE(H3))*(L3=""soldé"")*(M3=""soldé"")"
    'Nbre lignes à transférer
    Nbre = Application.CountIf(.Columns("AA"), 1)
    'prise en compte ligne à tranf&rer
    For Cptr = 1 To Nbre
    Lig = .Columns("AA").Find(what:=1, after:=.Range("AA2"), LookIn:=xlValues).Row
    Transfer = .Range(.Cells(Lig, "A"), .Cells(Lig, "Z"))
    'report en archives
    With Sheets("Archives")
    Ligvid = .Columns("A").Find(what:="", after:=.Range("A2")).Row
    With .Cells(Ligvid, "A").Resize(1, 26)
    .Value = Transfer
    .Borders.Weight = xlThin
    End With
    End With
    'détruit la ligne sur "suivi sof"
    .Rows(Lig).Delete
    Next
    'détruit la colonne de test
    Columns("AA").Clear
    End With
    MsgBox "Archivage terminé"
    End Sub



    je repasse en fin d'apres midi
     Michel
    0
    1. louisamiel Messages postés 67 Statut Membre
       
      michel, j ai testé votre code en modifiant H3 par J3 car je me suis trompée de colonnes pour les conditions. mais l archivage ne fontionne pas ...
      0
  7. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour

    dans ta colonne J , TOUTES les lignes renvoie X, certaines ont été camouflées en écrivant rouge sur fond rouge : CHAPEAU !!!

    comme toutes les lignes renvoie X, l'archivage ne peut pas se faire

    la formule est à refaire et c'est ton problème.

    0
    1. Utilisateur anonyme
       
      Ah, ben oui, ça ! Faut une bonne vue pour voir un texte rouge sur fond rouge !  ;)
      T'as bien raison, michel : c'est super bien camouflé ! du texte vert sur fond vert
      aussi, ça doit être pas mal !  :P Ou toute variante similaire...  :P
      0
    2. louisamiel Messages postés 67 Statut Membre
       
      NON toutes lignes renvoient pas au X , cest juste un remplissage
      il y a bien certaines lignes qui remplissent les 3 conditions .

      J accepete la critique sans pb car je suis pas experte d ou mon passage sur le site, mais on peut tres bien faire les remarques en etant " gentil"

      enfin bref merci quand meme
      0
    3. Utilisateur anonyme > louisamiel Messages postés 67 Statut Membre
       
      Excuse-moi, louisamiel, c'était juste pour plaisanter, et pas méchamment !  ;)
      Pour la réponse à ton problème, je laisse michel continuer ton suivi.
      Je te souhaite une bonne année 2017, et meilleurs vœux !  :)
      0
    4. Utilisateur anonyme > louisamiel Messages postés 67 Statut Membre
       
       
      J'ai regardé la copie d'écran du message #18 de f894009.
      En H2, la formule utilise ces 3 colonnes : 8, 10, 11 = H, J, K
      Ne serait-ce pas plutôt : 10, 12, 13 = J, L, M ?

      Si oui, à corriger ; cette correction étant peut-être à faire
      pour toute la ligne 2 ? Et peut-être alors que la macro
      marchera ? Si je me suis trompé, attention à bien tout
      remettre comme c'était avant ! Le plus simple est de
      faire l'essai sur une copie du fichier.
       
      0
    5. louisamiel Messages postés 67 Statut Membre > Utilisateur anonyme
       
      oui effectivement je me suis rendu compte que j ai pas mis les bonnes colonnes pour les conditions
      du ma macro fonctionne avec un lenteur mais fonctionne
      merci bien
      0