Macro excel
Fermé
missnour
-
16 mars 2009 à 11:39
Le Pingou Messages postés 12225 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 6 décembre 2024 - 18 mars 2009 à 17:12
Le Pingou Messages postés 12225 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 6 décembre 2024 - 18 mars 2009 à 17:12
A voir également:
- Macro excel
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - Guide
12 réponses
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
16 mars 2009 à 16:12
16 mars 2009 à 16:12
Bonjour,
Ou est le problème, la macro fonctionne.
Ou est le problème, la macro fonctionne.
slt,d'abord merci pour votre attention
le probléme c ke je veux :
-Je veux que l’algorithme me créer une nouvelle feuil a chaque exécution
Set mafeuille = Sheets.Add(, Sheets(Sheets.Count))
mafeuille.Name = "Feuil1"
- cherché les date arivent a la fin apré 15 jours
Private Sub Workbook_Open()
Dim DerLig As Long, Lig As Long, NbJ As Integer
Dim DateF As Date, DateJ As Date
Dim Msg As String
' récupérer le nombre de jour avant échéance
NbJ = Sheets("Params").Range("NbJAvt").Value
DateJ = Format(Now() + NbJ, "dd/mm/yyyy")
Msg = ""
' Avec Etat Inter 28janv09
With Sheets("Etat Inter 28janv09")
' Récupérer la dernière ligne du tableau
DerLig = .Range("G" & Rows.Count).End(xlUp).Row
' Pour chaque ligne on vérifie si écchéance proche
For Lig = 2 To DerLig
' Récupérer la date de la feuille colonne C
On Error Resume Next
DateF = Format(.Range("H" & Lig).Value, "dd/mm/yyyy")
On Error GoTo 0
' Vérifier avec la Date du Jour d'échéance + Nb jours d'avance
If DateF = DateJ Then
Msg = Msg & Lig & ", "
' Mettre en rouge (par exemple) la cellule
.Range("H" & Lig).Interior.ColorIndex = 3
End If
Next Lig
End With
If Msg <> "" Then
' Supprimer la virgule de la fin
Msg = Left(Msg, Len(Msg) - 2)
' Afficher le message
MsgBox "Attention, les lignes : " & Msg & " arrivent à la fin du contart dans : " & NbJ & " jour(s)"
End If
End Sub
Je veux pas avoir un message je veux avoir le résultat dans la nouvelle feuil crées déjà
-pour copie les donnée d 'une feuil a une autre (copie juste les resultat de l’algorithme précèdent
Sheets("Etat Inter 28janv09").Select
ActiveCell.SpecialCells(xlLastCell).Select
Range(Selection, Cells(1)).Select
Sheets("Feuil1").Activate ' feuille de destination
Col = "H" ' colonne de la donnée non vide à tester
NumLig = 0
With Sheets("Etat Inter 28janv09") ' feuille source
NbrLig = .Cells(65536, Col).End(xlUp).Row
For Lig = 1 To NbrLig
If .Cells(Lig, Col).Value <> "" Then
.Cells(Lig, Col).EntireRow.Copy
NumLig = NumLig + 1
Cells(NumLig, 1).Select
ActiveSheet.Paste
End If
Next
End With
le probléme c ke je veux :
-Je veux que l’algorithme me créer une nouvelle feuil a chaque exécution
Set mafeuille = Sheets.Add(, Sheets(Sheets.Count))
mafeuille.Name = "Feuil1"
- cherché les date arivent a la fin apré 15 jours
Private Sub Workbook_Open()
Dim DerLig As Long, Lig As Long, NbJ As Integer
Dim DateF As Date, DateJ As Date
Dim Msg As String
' récupérer le nombre de jour avant échéance
NbJ = Sheets("Params").Range("NbJAvt").Value
DateJ = Format(Now() + NbJ, "dd/mm/yyyy")
Msg = ""
' Avec Etat Inter 28janv09
With Sheets("Etat Inter 28janv09")
' Récupérer la dernière ligne du tableau
DerLig = .Range("G" & Rows.Count).End(xlUp).Row
' Pour chaque ligne on vérifie si écchéance proche
For Lig = 2 To DerLig
' Récupérer la date de la feuille colonne C
On Error Resume Next
DateF = Format(.Range("H" & Lig).Value, "dd/mm/yyyy")
On Error GoTo 0
' Vérifier avec la Date du Jour d'échéance + Nb jours d'avance
If DateF = DateJ Then
Msg = Msg & Lig & ", "
' Mettre en rouge (par exemple) la cellule
.Range("H" & Lig).Interior.ColorIndex = 3
End If
Next Lig
End With
If Msg <> "" Then
' Supprimer la virgule de la fin
Msg = Left(Msg, Len(Msg) - 2)
' Afficher le message
MsgBox "Attention, les lignes : " & Msg & " arrivent à la fin du contart dans : " & NbJ & " jour(s)"
End If
End Sub
Je veux pas avoir un message je veux avoir le résultat dans la nouvelle feuil crées déjà
-pour copie les donnée d 'une feuil a une autre (copie juste les resultat de l’algorithme précèdent
Sheets("Etat Inter 28janv09").Select
ActiveCell.SpecialCells(xlLastCell).Select
Range(Selection, Cells(1)).Select
Sheets("Feuil1").Activate ' feuille de destination
Col = "H" ' colonne de la donnée non vide à tester
NumLig = 0
With Sheets("Etat Inter 28janv09") ' feuille source
NbrLig = .Cells(65536, Col).End(xlUp).Row
For Lig = 1 To NbrLig
If .Cells(Lig, Col).Value <> "" Then
.Cells(Lig, Col).EntireRow.Copy
NumLig = NumLig + 1
Cells(NumLig, 1).Select
ActiveSheet.Paste
End If
Next
End With
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
17 mars 2009 à 15:10
17 mars 2009 à 15:10
Bonjour missnour,
Je commence à comprendre se que vous désirez obtenir.
Par contre pour intervenir correctement dans votre macro il serait bien de connaitre la structure du classeur, au minimum la feuille qui contient les données que vous voulez copier vers une autre feuille.
Je commence à comprendre se que vous désirez obtenir.
Par contre pour intervenir correctement dans votre macro il serait bien de connaitre la structure du classeur, au minimum la feuille qui contient les données que vous voulez copier vers une autre feuille.
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
17 mars 2009 à 16:15
17 mars 2009 à 16:15
Bonjour missnour,
Si je comprend bien, vous désirez que toutes les échéances trouvées soient extraite sur la nouvelle feuille !
Si je comprend bien, vous désirez que toutes les échéances trouvées soient extraite sur la nouvelle feuille !
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
>
missnour
17 mars 2009 à 17:10
17 mars 2009 à 17:10
Bonjour missnour,
Essayez avec la macro ci dessous.
La coller dans le même module et renommer l'ancienne par : Private Sub Workbook_Open_old()
pour la neutraliser.
Salutations.
Jean-Pierre
Essayez avec la macro ci dessous.
La coller dans le même module et renommer l'ancienne par : Private Sub Workbook_Open_old()
pour la neutraliser.
Private Sub Workbook_Open() Dim DerLig As Long, Lig As Long, NbJ As Integer, shli As Integer Dim DateF As Date, DateJ As Date Dim Msg As String, shEch As String ' récupérer le nombre de jour avant échéance NbJ = Sheets("Params").Range("NbJAvt").Value DateJ = Format(Now() + NbJ, "dd/mm/yyyy") Msg = "" shEch = "" ' Avec Etat Inter 28janv09 With Sheets("Etat Inter 28janv09") ' Récupérer la dernière ligne du tableau DerLig = .Range("G" & Rows.Count).End(xlUp).Row ' Pour chaque ligne on vérifie si écchéance proche For Lig = 2 To DerLig ' Récupérer la date de la feuille colonne C On Error Resume Next DateF = Format(.Range("g" & Lig).Value, "dd/mm/yyyy") On Error GoTo 0 ' Vérifier avec la Date du Jour d'échéance + Nb jours d'avance If DateF = DateJ Then ' **** au premier passage créer la nouvelle feuille et la nommer If shEch = "" Then Set mafeuille = Sheets.Add(, Sheets(Sheets.Count)) mafeuille.Name = "Echeance_" & DateJ shEch = ActiveSheet.Name Sheets("Etat Inter 28janv09").Rows(1).Copy Destination:=Rows(1) shli = 2 Sheets("Etat Inter 28janv09").Select End If ' **** copier la ligne vers nouvelle feuille Rows(Lig).Copy Destination:=Sheets(shEch).Rows(shli) shli = shli + 1 '***Msg = Msg & Lig & ", " '***Mettre en rouge (par exemple) la cellule '***.Range("H" & Lig).Interior.ColorIndex = 3 End If--
Salutations.
Jean-Pierre
missnour
>
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
17 mars 2009 à 17:36
17 mars 2009 à 17:36
j ai un probléme tu peux me contacté sur mon email c chemaaf.z@hotmail.com j atend ta reponse merci d'avance
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
17 mars 2009 à 17:41
17 mars 2009 à 17:41
Bonjour,
Qu'elle est le problème !
Qu'elle est le problème !
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
17 mars 2009 à 17:55
17 mars 2009 à 17:55
Bonjour missnour,
Trouver cette ligne dans la macro:
DateF = Format(.Range("g" & Lig).Value, "dd/mm/yyyy")
Remplacer le "g" par "H" .... eh oui, sans la structure de votre feuille .....
Trouver cette ligne dans la macro:
DateF = Format(.Range("g" & Lig).Value, "dd/mm/yyyy")
Remplacer le "g" par "H" .... eh oui, sans la structure de votre feuille .....
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
17 mars 2009 à 20:06
17 mars 2009 à 20:06
Bonjour,
Quel résultat obtenez-vous avec la macro non modifié ?
Merci de votre réponse.
Quel résultat obtenez-vous avec la macro non modifié ?
Merci de votre réponse.
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
18 mars 2009 à 10:52
18 mars 2009 à 10:52
Bonjour,
Merci de m'envoyer cette macro qui fonctionne !
J'attends ..
Merci de m'envoyer cette macro qui fonctionne !
J'attends ..
Private Sub Workbook_Open()
Dim DerLig As Long, Lig As Long, NbJ As Integer
Dim DateF As Date, DateJ As Date
Dim NumLig As Long
Dim Col As String
Dim NbrLig As Long
Dim Msg As String
' récupérer le nombre de jour avant échéance
NbJ = Sheets("Params").Range("NbJAvt").Value
DateJ = Format(Now() + NbJ, "dd/mm/yyyy")
Msg = ""
' Avec Etat Inter 28janv09
With Sheets("Etat Inter 28janv09")
' Récupérer la dernière ligne du tableau
DerLig = .Range("G" & Rows.Count).End(xlUp).Row
' Pour chaque ligne on vérifie si écchéance proche
For Lig = 2 To DerLig
' Récupérer la date de la feuille colonne H
On Error Resume Next
DateF = Format(.Range("H" & Lig).Value, "dd/mm/yyyy")
On Error GoTo 0
' Vérifier avec la Date du Jour d'échéance + Nb jours d'avance
If DateF = DateJ Then
Msg = Msg & Lig & ", "
' Mettre en rouge (par exemple) la cellule
.Range("H" & Lig).Interior.ColorIndex = 3
End If
Next Lig
End With
Sheets("Feuil1").Activate ' feuille de destination
Col = "H" ' colonne de la donnée non vide à tester
NumLig = 0
With Sheets("Etat Inter 28janv09") ' feuille source
NbrLig = .Cells(65536, Col).End(xlUp).Row
For Lig = 1 To NbrLig
If .Cells(Lig, Col).Value <> "" Then
.Cells(Lig, Col).EntireRow.Copy
NumLig = NumLig + 1
Cells(NumLig, 1).Select
ActiveSheet.Paste
End If
Next
End With
End Sub
Dim DerLig As Long, Lig As Long, NbJ As Integer
Dim DateF As Date, DateJ As Date
Dim NumLig As Long
Dim Col As String
Dim NbrLig As Long
Dim Msg As String
' récupérer le nombre de jour avant échéance
NbJ = Sheets("Params").Range("NbJAvt").Value
DateJ = Format(Now() + NbJ, "dd/mm/yyyy")
Msg = ""
' Avec Etat Inter 28janv09
With Sheets("Etat Inter 28janv09")
' Récupérer la dernière ligne du tableau
DerLig = .Range("G" & Rows.Count).End(xlUp).Row
' Pour chaque ligne on vérifie si écchéance proche
For Lig = 2 To DerLig
' Récupérer la date de la feuille colonne H
On Error Resume Next
DateF = Format(.Range("H" & Lig).Value, "dd/mm/yyyy")
On Error GoTo 0
' Vérifier avec la Date du Jour d'échéance + Nb jours d'avance
If DateF = DateJ Then
Msg = Msg & Lig & ", "
' Mettre en rouge (par exemple) la cellule
.Range("H" & Lig).Interior.ColorIndex = 3
End If
Next Lig
End With
Sheets("Feuil1").Activate ' feuille de destination
Col = "H" ' colonne de la donnée non vide à tester
NumLig = 0
With Sheets("Etat Inter 28janv09") ' feuille source
NbrLig = .Cells(65536, Col).End(xlUp).Row
For Lig = 1 To NbrLig
If .Cells(Lig, Col).Value <> "" Then
.Cells(Lig, Col).EntireRow.Copy
NumLig = NumLig + 1
Cells(NumLig, 1).Select
ActiveSheet.Paste
End If
Next
End With
End Sub
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
18 mars 2009 à 11:25
18 mars 2009 à 11:25
Bonjour missnour,
Une bonne nouvel et une mauvaise.
Les 2 macros fonctionnent correctement, donc le problème est chez vous.
Je vous joint une nouvel copie du code qui fonctionne chez moi.
Vous devez le copiez dans votre [ThisWorkbook] et modifier le nom de l'autre macro pour a neutraliser.
Note: vous constaterez que les messages non désirés sont neutralisés !
Petit détail, votre macro ne crée aucune nouvelle feuille, au contraire, de la modifier qui crée une feuille nommées Echeance_+ la date d'échéance.
Une bonne nouvel et une mauvaise.
Les 2 macros fonctionnent correctement, donc le problème est chez vous.
Je vous joint une nouvel copie du code qui fonctionne chez moi.
Vous devez le copiez dans votre [ThisWorkbook] et modifier le nom de l'autre macro pour a neutraliser.
Private Sub Workbook_Open() Dim DerLig As Long, Lig As Long, NbJ As Integer, shli As Integer Dim DateF As Date, DateJ As Date Dim Msg As String, shEch As String ' récupérer le nombre de jour avant échéance NbJ = Sheets("Params").Range("NbJAvt").Value DateJ = Format(Now() + NbJ, "dd/mm/yyyy") Msg = "" shEch = "" ' Avec Etat Inter 28janv09 With Sheets("Etat Inter 28janv09") ' Récupérer la dernière ligne du tableau DerLig = .Range("G" & Rows.Count).End(xlUp).Row ' Pour chaque ligne on vérifie si écchéance proche For Lig = 2 To DerLig ' Récupérer la date de la feuille colonne C On Error Resume Next DateF = Format(.Range("H" & Lig).Value, "dd/mm/yyyy") On Error GoTo 0 ' Vérifier avec la Date du Jour d'échéance + Nb jours d'avance If DateF = DateJ Then ' **** au premier passage créer la nouvelle feuille et la nommer If shEch = "" Then Set mafeuille = Sheets.Add(, Sheets(Sheets.Count)) mafeuille.Name = "Echeance_" & DateJ shEch = ActiveSheet.Name Sheets("Etat Inter 28janv09").Rows(1).Copy Destination:=Rows(1) shli = 2 Sheets("Etat Inter 28janv09").Select End If ' **** copier la ligne vers nouvelle feuille Rows(Lig).Copy Destination:=Sheets(shEch).Rows(shli) shli = shli + 1 '***Msg = Msg & Lig & ", " '***Mettre en rouge (par exemple) la cellule '***.Range("H" & Lig).Interior.ColorIndex = 3 End If Next Lig End With ' ***If Msg <> "" Then ' Supprimer la virgule de la fin ' ***Msg = Left(Msg, Len(Msg) - 2) ' Afficher le message ' ***MsgBox "Attention, les lignes : " & Msg & " arrivent à la fin du contart dans : " & NbJ & " jour(s)" ' ***End If End Sub
Note: vous constaterez que les messages non désirés sont neutralisés !
Petit détail, votre macro ne crée aucune nouvelle feuille, au contraire, de la modifier qui crée une feuille nommées Echeance_+ la date d'échéance.
ok je vais esayer de resoudre se prob, autre chose peu tu me renseigner sur access
j ai un autre code vb est je veux l'utiliser dans une basse de donnée access vb6-vba (chiffre en lettre) par exemple quant je tappe 5000 dh dans le champ salaire,je doi avoir cinq mile dirhams dans l'autre champ(salaire en lettres)
le probléme c que jai déja fai copie coller de se code dans modules mais je connai pas l'astuce pr créer une macro pr activer le macro dans les champs concernér
merci
j ai un autre code vb est je veux l'utiliser dans une basse de donnée access vb6-vba (chiffre en lettre) par exemple quant je tappe 5000 dh dans le champ salaire,je doi avoir cinq mile dirhams dans l'autre champ(salaire en lettres)
le probléme c que jai déja fai copie coller de se code dans modules mais je connai pas l'astuce pr créer une macro pr activer le macro dans les champs concernér
merci
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
>
missnour
18 mars 2009 à 13:50
18 mars 2009 à 13:50
Bonjour,
Pour l'erreur, merci d'indiquer la ligne de code surlignée en jaune !
Pour l'erreur, merci d'indiquer la ligne de code surlignée en jaune !
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
18 mars 2009 à 14:00
18 mars 2009 à 14:00
Bonjour,
Pour ceci : le probléme c que jai déja fai copie coller de se code dans modules mais je connai pas l'astuce pr créer une macro pr activer le macro dans les champs concernér
C'est incompréhensible !
Pour ceci : le probléme c que jai déja fai copie coller de se code dans modules mais je connai pas l'astuce pr créer une macro pr activer le macro dans les champs concernér
C'est incompréhensible !
Pour ceci : le probléme c que jai déja fai copie coller de se code dans modules mais je connai pas l'astuce pr créer une macro pr activer le macro dans les champs concernér
je veux crées un macro pr executé le code vb qui setrouve dans le module
je veux meme savoir comme faire pr spesifier que ce macro doi sexsecuté juste apre la sesie du salaire en chiffre
je veux crées un macro pr executé le code vb qui setrouve dans le module
je veux meme savoir comme faire pr spesifier que ce macro doi sexsecuté juste apre la sesie du salaire en chiffre
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
18 mars 2009 à 17:12
18 mars 2009 à 17:12
Bonjour,
Désolé, mais je pense qu'il s'agit d'un autre problème que je n'arrive pas à comprendre, je ne suis pas Mme Soleil.
Désolé, mais je pense qu'il s'agit d'un autre problème que je n'arrive pas à comprendre, je ne suis pas Mme Soleil.
17 mars 2009 à 10:26