Macro
Résolu
louisamiel
Messages postés
67
Statut
Membre
-
michel_m Messages postés 18903 Statut Contributeur -
michel_m Messages postés 18903 Statut Contributeur -
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
Merci pour votre aide
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
A voir également:
- Macro
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Macro maker - Télécharger - Divers Utilitaires
- Macro word - Guide
6 réponses
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
Dans l’attente
Michel
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
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
100, 1000,10000.... (dans suivi sof)
le nombre de lignes déterminera une méthode traitement ou une autre
Michel
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
re,
merci F89 pour la remarque
en attendant une dernière vérif
je repasse en fin d'apres midi
Michel
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
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.
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.
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
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
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.
il s arrete au message box " position de la derniere ligne" plus rien apres.
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..