Excel alerte
Fermé
cotuitioj
Messages postés
9
Date d'inscription
jeudi 28 février 2013
Statut
Membre
Dernière intervention
30 novembre 2022
-
28 févr. 2013 à 21:45
CUTUITIOJ Messages postés 6 Date d'inscription lundi 18 mars 2013 Statut Membre Dernière intervention 30 novembre 2022 - 30 nov. 2022 à 23:57
CUTUITIOJ Messages postés 6 Date d'inscription lundi 18 mars 2013 Statut Membre Dernière intervention 30 novembre 2022 - 30 nov. 2022 à 23:57
A voir également:
- Excel alerte
- Liste déroulante excel - Guide
- Fausse alerte mcafee - Accueil - Piratage
- Si et excel - Guide
- Word et excel gratuit - Guide
- Déplacer une colonne excel - Guide
37 réponses
via55,
c'est exactement ça ,donc j'aimerai que si c'est livré que le sous douane s'efface.
en outre es ce on peut faire en sorte que l'alerte soit un tableau avec les libellés.
c'est exactement ça ,donc j'aimerai que si c'est livré que le sous douane s'efface.
en outre es ce on peut faire en sorte que l'alerte soit un tableau avec les libellés.
via55
Messages postés
14512
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 janvier 2025
2 741
14 mars 2013 à 00:04
14 mars 2013 à 00:04
Voila le mieux que je puisse faire :
Private Sub Workbook_Open()
On Error Resume Next
mes = "ALERTE pour :" & Chr(10) & Chr(10) & "SUPPLIER ORDER ABW LIVRAISON TRANSIT" & Chr(10) & Chr(10)
Sheets("Feuil1").Select
der = Range("L9").End(xlDown).Row 'recherche derniere cellule remplie à partir de L9
For n = 10 To der 'boucle depuis la ligne 10 jusqu'à la ligne der
nom = Cells(n, 3)
ord = Cells(n, 9)
abw = Cells(n, 4)
If Cells(n, 4).Value <> "" Then mes = mes & nom & String(15 - Len(nom), " ") & ord & String(15 - Len(ord), " ") & abw & String(20 - Len(abw), " ") Else GoTo suite
If Cells(n, 14).Value <> "N/A" And Cells(n, 13) = "N/A" Then mes = mes & "Sous douane"
If Cells(n, 13).Value <> "N/A" Then mes = mes & "le " & Cells(n, 13).Value & " " & (Cells(n, 13).Value - Cells(n, 12).Value + 3)
mes = mes & Chr(10)
suite:
Next
MsgBox (mes)
End Sub
Private Sub Workbook_Open()
On Error Resume Next
mes = "ALERTE pour :" & Chr(10) & Chr(10) & "SUPPLIER ORDER ABW LIVRAISON TRANSIT" & Chr(10) & Chr(10)
Sheets("Feuil1").Select
der = Range("L9").End(xlDown).Row 'recherche derniere cellule remplie à partir de L9
For n = 10 To der 'boucle depuis la ligne 10 jusqu'à la ligne der
nom = Cells(n, 3)
ord = Cells(n, 9)
abw = Cells(n, 4)
If Cells(n, 4).Value <> "" Then mes = mes & nom & String(15 - Len(nom), " ") & ord & String(15 - Len(ord), " ") & abw & String(20 - Len(abw), " ") Else GoTo suite
If Cells(n, 14).Value <> "N/A" And Cells(n, 13) = "N/A" Then mes = mes & "Sous douane"
If Cells(n, 13).Value <> "N/A" Then mes = mes & "le " & Cells(n, 13).Value & " " & (Cells(n, 13).Value - Cells(n, 12).Value + 3)
mes = mes & Chr(10)
suite:
Next
MsgBox (mes)
End Sub
via55,
Excellent,juste aligner les donner sous leur libellés et mettre un clisseur pour me permettre de defiler en cas ou il aura plus de donner.
Excellent,juste aligner les donner sous leur libellés et mettre un clisseur pour me permettre de defiler en cas ou il aura plus de donner.
via55
Messages postés
14512
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 janvier 2025
2 741
14 mars 2013 à 00:32
14 mars 2013 à 00:32
Je ne peux pas plus
Les données sont "alignées" par le remplacement des caracteres manquants par rapport à 15 caracteres par des espaces mais alignement ne peut pas être parfait car dans les noms de départ des mots de même nombre de caractères n'ont pas la même longueur (un i est moins large qu'un m par exemple)
Quant à la fenetre d'alerte elle s'agrandit automatiquement en fonction du nombre de lignes
mais ATTENTION une messagebox est limitée à un millier de caractères donc si tu beaucoup de lignes il y en a qui ne seront pas affichées
Si tu as beaucoup de données ce n'est pas par Messagebox qu'il faut proceder, il faut faire recopier les données que tu veux dans une 2nde feuille dans un tableau et que l'alerte se contente à afficher cette feuille à l'ouverture du classeur
Mais là je te laisse faire le boulot !
Les données sont "alignées" par le remplacement des caracteres manquants par rapport à 15 caracteres par des espaces mais alignement ne peut pas être parfait car dans les noms de départ des mots de même nombre de caractères n'ont pas la même longueur (un i est moins large qu'un m par exemple)
Quant à la fenetre d'alerte elle s'agrandit automatiquement en fonction du nombre de lignes
mais ATTENTION une messagebox est limitée à un millier de caractères donc si tu beaucoup de lignes il y en a qui ne seront pas affichées
Si tu as beaucoup de données ce n'est pas par Messagebox qu'il faut proceder, il faut faire recopier les données que tu veux dans une 2nde feuille dans un tableau et que l'alerte se contente à afficher cette feuille à l'ouverture du classeur
Mais là je te laisse faire le boulot !
VIA55,
la même formule peut s'appliquer sur une 2e feuille dont l'alerte va prendre en charge en utilisant le même tableau que tu vien de faire pour la macro alerte
la même formule peut s'appliquer sur une 2e feuille dont l'alerte va prendre en charge en utilisant le même tableau que tu vien de faire pour la macro alerte
via55
Messages postés
14512
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 janvier 2025
2 741
14 mars 2013 à 00:56
14 mars 2013 à 00:56
La macro a été faite pour la feuille 1
cf la 4eme ligne : Sheets("Feuil1").Select
qui selectionne la feuille nommée "Feuil1"
Si tu veux qu'elle s'applique à une autre feuille (si les données sont dans un tableau identique) il faut changer le nom dans la parenthese sur la 4eme ligne
cf la 4eme ligne : Sheets("Feuil1").Select
qui selectionne la feuille nommée "Feuil1"
Si tu veux qu'elle s'applique à une autre feuille (si les données sont dans un tableau identique) il faut changer le nom dans la parenthese sur la 4eme ligne
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
VIA55,
je l'ai fait mais la feuille 2 ne sort pas comme alerte à l'ouverture du classeur
je l'ai fait mais la feuille 2 ne sort pas comme alerte à l'ouverture du classeur
via55
Messages postés
14512
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 janvier 2025
2 741
14 mars 2013 à 01:25
14 mars 2013 à 01:25
??
la feuille 2 doit comporter un tableau strictement identique à celui de la feuille 1(nombre de colonnes et titres etc) puisque la recuperation des données est fondée sur ces colonnes
la feuille 2 doit comporter un tableau strictement identique à celui de la feuille 1(nombre de colonnes et titres etc) puisque la recuperation des données est fondée sur ces colonnes
Bonjour VIA55,
j'ai finalement obter pour l'alerte avec la MACRO ,Mais la formule s'arrête a la ligne 21 du tableau je veus celà prenne tout le tableau en compte.
donc j'aimerai modifier l'alerte qui doit prend en charge que ce qui sont seulement sous douane et recenment livrer c'est à dire livrer il ya 7jours.
Sincère Salutation
j'ai finalement obter pour l'alerte avec la MACRO ,Mais la formule s'arrête a la ligne 21 du tableau je veus celà prenne tout le tableau en compte.
donc j'aimerai modifier l'alerte qui doit prend en charge que ce qui sont seulement sous douane et recenment livrer c'est à dire livrer il ya 7jours.
Sincère Salutation
via55
Messages postés
14512
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 janvier 2025
2 741
14 mars 2013 à 16:54
14 mars 2013 à 16:54
Adapte la macro en conséquence ! C'est comme ça qu'on apprend
le principe de base sont des tests de condition :
IF la condition qu'on veut THEN ce qu'on veut si la condition est bonne
ou
IF 1ere condition AND 2eme condition THEN
Par exemple : If Cells(n, 14).Value <> "N/A" and if cells((n,13).value then mes="Sous douane"
signifie SI la valeur decellule ligne n colonne 14 est differente de "N//A" ET la valeur de la cellule ligne n colonne 13 est aussi differente de "N/A" ALORS la variable mes est égale à elle même à laquelle on ajoute le texte "Sous douane"
Pour faire la différence entre aujourd'hui et la date d'une colonne le code est
dif = Date - cells(n,14).value
dif est le nom que tu donnes à la variable (tu peux mettre autre chose)
Date est la date du jour
Cells (n,14).value est la date contenue dans la cellule ligne n colonne 14
Ensuite tu peux tester avec une condition si la difference convient , ici tu veux ne retenir que les livraisons depuis 7 jours donc inferieures à 8 jours donc tu codes :
IF dif <8 THEN ..........
Bon courage
le principe de base sont des tests de condition :
IF la condition qu'on veut THEN ce qu'on veut si la condition est bonne
ou
IF 1ere condition AND 2eme condition THEN
Par exemple : If Cells(n, 14).Value <> "N/A" and if cells((n,13).value then mes="Sous douane"
signifie SI la valeur decellule ligne n colonne 14 est differente de "N//A" ET la valeur de la cellule ligne n colonne 13 est aussi differente de "N/A" ALORS la variable mes est égale à elle même à laquelle on ajoute le texte "Sous douane"
Pour faire la différence entre aujourd'hui et la date d'une colonne le code est
dif = Date - cells(n,14).value
dif est le nom que tu donnes à la variable (tu peux mettre autre chose)
Date est la date du jour
Cells (n,14).value est la date contenue dans la cellule ligne n colonne 14
Ensuite tu peux tester avec une condition si la difference convient , ici tu veux ne retenir que les livraisons depuis 7 jours donc inferieures à 8 jours donc tu codes :
IF dif <8 THEN ..........
Bon courage
VIA55,
Voir ci dessous la formule que j'ai utilisé celà ne prend pas en compte seulement les "sous douane ".
or je veut ça prenne que les "sous douane" et les livrés au cour d'une semaine en cour mentionnant la date comme dans la fourmule .
Le "transit " reste la même mais sera en fonction de ce que l'alerte mentionnera
c'est à dire transit "sous douane' et "livré"
voir ci dessous
Private Sub Workbook_Open()
On Error Resume Next
mes = "ALERTE pour :" & Chr(10) & Chr(10) & "SUPPLIER ORDER ABW LIVRAISON TRANSIT" & Chr(10) & Chr(10)
Sheets("Feuil3").Select
der = Range("L9").End(xlDown).Row 'recherche derniere cellule remplie à partir de L9
For n = 10 To der 'boucle depuis la ligne 10 jusqu'à la ligne der
nom = Cells(n, 3)
ord = Cells(n, 9)
abw = Cells(n, 4)
If Cells(n, 4).Value <> "" Then mes = mes & nom & String(15 - Len(nom), " ") & ord & String(15 - Len(ord), " ") & abw & String(20 - Len(abw), " ") Else GoTo suite
If Cells(n, 14).Value <> "N/A" And if Cells(n, 13).Value Then mes = mes & "Sous douane"
dif = Date - Cells(n, 14).Value
If dif < 8 Then mes = mes & "le " & Cells(n, 13).Value & " " & (Cells(n, 13).Value - Cells(n, 12).Value + 3)
mes = mes & Chr(10)
suite:
Next
MsgBox (mes)
End Sub
Voir ci dessous la formule que j'ai utilisé celà ne prend pas en compte seulement les "sous douane ".
or je veut ça prenne que les "sous douane" et les livrés au cour d'une semaine en cour mentionnant la date comme dans la fourmule .
Le "transit " reste la même mais sera en fonction de ce que l'alerte mentionnera
c'est à dire transit "sous douane' et "livré"
voir ci dessous
Private Sub Workbook_Open()
On Error Resume Next
mes = "ALERTE pour :" & Chr(10) & Chr(10) & "SUPPLIER ORDER ABW LIVRAISON TRANSIT" & Chr(10) & Chr(10)
Sheets("Feuil3").Select
der = Range("L9").End(xlDown).Row 'recherche derniere cellule remplie à partir de L9
For n = 10 To der 'boucle depuis la ligne 10 jusqu'à la ligne der
nom = Cells(n, 3)
ord = Cells(n, 9)
abw = Cells(n, 4)
If Cells(n, 4).Value <> "" Then mes = mes & nom & String(15 - Len(nom), " ") & ord & String(15 - Len(ord), " ") & abw & String(20 - Len(abw), " ") Else GoTo suite
If Cells(n, 14).Value <> "N/A" And if Cells(n, 13).Value Then mes = mes & "Sous douane"
dif = Date - Cells(n, 14).Value
If dif < 8 Then mes = mes & "le " & Cells(n, 13).Value & " " & (Cells(n, 13).Value - Cells(n, 12).Value + 3)
mes = mes & Chr(10)
suite:
Next
MsgBox (mes)
End Sub
via55
Messages postés
14512
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 janvier 2025
2 741
Modifié par via55 le 14/03/2013 à 20:56
Modifié par via55 le 14/03/2013 à 20:56
Re
Déja ta ligne ne peut pas marcher :
If Cells(n, 14).Value <> "N/A" And if Cells(n, 13).Value Then mes = mes & "Sous douane"
ce devrait être plutot :
If Cells(n, 14).Value <> "N/A" And Cells(n, 13).Value="N/A" Then mes = mes & "Sous douane"
Cette ligne prend en compte les Sous douane si c'est ta condition première elle doit venir en 1er et sinon on va à la fin sans executer le reste par un ELSE GOTO ....
donc la macro seraiit plutôt :
Private Sub Workbook_Open()
On Error Resume Next
mes = "ALERTE pour :" & Chr(10) & Chr(10) & "SUPPLIER ORDER ABW LIVRAISON TRANSIT" & Chr(10) & Chr(10)
Sheets("Feuil3").Select
der = Range("L9").End(xlDown).Row 'recherche derniere cellule remplie à partir de L9
For n = 10 To der 'boucle depuis la ligne 10 jusqu'à la ligne der
nom = Cells(n, 3)
ord = Cells(n, 9)
abw = Cells(n, 4)
If Cells(n, 14).Value <> "N/A" <gras>And Cells(n, 13).Value="N/A" Then mes = mes & nom & String(15 - Len(nom), " ") & ord & String(15 - Len(ord), " ") & abw & String(20 - Len(abw), " ") & " Sous douane" Else GoTo suite
dif = Date - Cells(n, 14).Value
If dif < 8 Then mes = mes & "le " & Cells(n, 13).Value & " " & (Cells(n, 13).Value - Cells(n, 12).Value + 3)
mes = mes & Chr(10)
suite:
Next
MsgBox (mes)
End Sub
Déja ta ligne ne peut pas marcher :
If Cells(n, 14).Value <> "N/A" And if Cells(n, 13).Value Then mes = mes & "Sous douane"
ce devrait être plutot :
If Cells(n, 14).Value <> "N/A" And Cells(n, 13).Value="N/A" Then mes = mes & "Sous douane"
Cette ligne prend en compte les Sous douane si c'est ta condition première elle doit venir en 1er et sinon on va à la fin sans executer le reste par un ELSE GOTO ....
donc la macro seraiit plutôt :
Private Sub Workbook_Open()
On Error Resume Next
mes = "ALERTE pour :" & Chr(10) & Chr(10) & "SUPPLIER ORDER ABW LIVRAISON TRANSIT" & Chr(10) & Chr(10)
Sheets("Feuil3").Select
der = Range("L9").End(xlDown).Row 'recherche derniere cellule remplie à partir de L9
For n = 10 To der 'boucle depuis la ligne 10 jusqu'à la ligne der
nom = Cells(n, 3)
ord = Cells(n, 9)
abw = Cells(n, 4)
If Cells(n, 14).Value <> "N/A" <gras>And Cells(n, 13).Value="N/A" Then mes = mes & nom & String(15 - Len(nom), " ") & ord & String(15 - Len(ord), " ") & abw & String(20 - Len(abw), " ") & " Sous douane" Else GoTo suite
dif = Date - Cells(n, 14).Value
If dif < 8 Then mes = mes & "le " & Cells(n, 13).Value & " " & (Cells(n, 13).Value - Cells(n, 12).Value + 3)
mes = mes & Chr(10)
suite:
Next
MsgBox (mes)
End Sub
VIA55,
ça met la ligne ci dessous en rouge dans la macro et quant s'execute la macro s'affiche Erreur de compilation Erreur syntaxe
If Cells(n, 14).Value <> "N/A" <gras>And Cells(n, 13).Value="N/A" Then mes = mes & nom & String(15 - Len(nom), " ") & ord & String(15 - Len(ord), " ") & abw & String(20 - Len(abw), " ") & " Sous douane" Else GoTo suite
ça met la ligne ci dessous en rouge dans la macro et quant s'execute la macro s'affiche Erreur de compilation Erreur syntaxe
If Cells(n, 14).Value <> "N/A" <gras>And Cells(n, 13).Value="N/A" Then mes = mes & nom & String(15 - Len(nom), " ") & ord & String(15 - Len(ord), " ") & abw & String(20 - Len(abw), " ") & " Sous douane" Else GoTo suite
via55
Messages postés
14512
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 janvier 2025
2 741
14 mars 2013 à 21:28
14 mars 2013 à 21:28
Ben vi !!
<gras> n'existe pas dans la macro ! (Ca ne t'as pas paru bizarre !)
c'est un bug du site car j'avais mis en gras la phrase (<gras> est la balise HTML pour mettre en gras mais elle ne devrait pas apparaitre )
la bonne ligne est donc :
If Cells(n, 14).Value <> "N/A" And Cells(n, 13).Value="N/A" Then mes = mes & nom & String(15 - Len(nom), " ") & ord & String(15 - Len(ord), " ") & abw & String(20 - Len(abw), " ") & " Sous douane" Else GoTo suite
<gras> n'existe pas dans la macro ! (Ca ne t'as pas paru bizarre !)
c'est un bug du site car j'avais mis en gras la phrase (<gras> est la balise HTML pour mettre en gras mais elle ne devrait pas apparaitre )
la bonne ligne est donc :
If Cells(n, 14).Value <> "N/A" And Cells(n, 13).Value="N/A" Then mes = mes & nom & String(15 - Len(nom), " ") & ord & String(15 - Len(ord), " ") & abw & String(20 - Len(abw), " ") & " Sous douane" Else GoTo suite
VIA55,
Je n'ai pas eu votre réaction par rapport à mon message
la Macro est bonne. mais une dernière chose àprès sous douane l'alerte doit affiche la date de la livraison si c'est livré.
et je veus que cette date là arrête de s'affiché après 7jour avec tout le contenu de la ligne.
Quat au transit l'alerte n'arrive pas à le faire sortir.
Salutation
Je n'ai pas eu votre réaction par rapport à mon message
la Macro est bonne. mais une dernière chose àprès sous douane l'alerte doit affiche la date de la livraison si c'est livré.
et je veus que cette date là arrête de s'affiché après 7jour avec tout le contenu de la ligne.
Quat au transit l'alerte n'arrive pas à le faire sortir.
Salutation
via55
Messages postés
14512
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 janvier 2025
2 741
16 mars 2013 à 00:13
16 mars 2013 à 00:13
Essaye cette macro
Private Sub Workbook_Open()
On Error Resume Next
mes = "ALERTE pour sous douane :" & Chr(10) & Chr(10) & "SUPPLIER ORDER ABW DATE LIVRAISON et TRANSIT" & Chr(10) & Chr(10)
Sheets("Feuil3").Select
der = Range("L9").End(xlDown).Row 'recherche derniere cellule remplie à partir de L9
For n = 10 To der 'boucle depuis la ligne 10 jusqu'à la ligne der
nom = Cells(n, 3)
ord = Cells(n, 9)
abw = Cells(n, 4)
dif = Date - Cells(n, 13).Value
If Cells(n, 14).Value <> "N/A" And Cells(n, 13).Value <> "N/A" And dif < 8 and dif >=0 Then mes = mes & nom & String(15 - Len(nom), " ") & ord & String(15 - Len(ord), " ") & abw & String(20 - Len(abw), " ") & Cells(n, 13).Value & " " & (Cells(n, 13).Value - Cells(n, 12).Value + 3) & " jours" Else: GoTo suite
mes = mes & Chr(10)
suite:
Next
MsgBox (mes)
End Sub
Les conditions sont réunies sur la même ligne et sont :
- il n'y a pas N/A en col 14 : cells(n,14) <>"N/A") donc il ya date ATA PAYS
- il n'y a pas N/A en col 13 : cells(n,13) <>"N/A") donc il y a date ATA SITE
- la diffference entre la date d'aujourd'hui et la date de livraison est inferieure à 8 et superieure ou egale à 0 : dif < 8 and dif >=0 donc on ne retient que les lignes avec une date de livraison dans les 7 derniers jours
Est ce enfin correspondant à ce que tu recherches ?
Private Sub Workbook_Open()
On Error Resume Next
mes = "ALERTE pour sous douane :" & Chr(10) & Chr(10) & "SUPPLIER ORDER ABW DATE LIVRAISON et TRANSIT" & Chr(10) & Chr(10)
Sheets("Feuil3").Select
der = Range("L9").End(xlDown).Row 'recherche derniere cellule remplie à partir de L9
For n = 10 To der 'boucle depuis la ligne 10 jusqu'à la ligne der
nom = Cells(n, 3)
ord = Cells(n, 9)
abw = Cells(n, 4)
dif = Date - Cells(n, 13).Value
If Cells(n, 14).Value <> "N/A" And Cells(n, 13).Value <> "N/A" And dif < 8 and dif >=0 Then mes = mes & nom & String(15 - Len(nom), " ") & ord & String(15 - Len(ord), " ") & abw & String(20 - Len(abw), " ") & Cells(n, 13).Value & " " & (Cells(n, 13).Value - Cells(n, 12).Value + 3) & " jours" Else: GoTo suite
mes = mes & Chr(10)
suite:
Next
MsgBox (mes)
End Sub
Les conditions sont réunies sur la même ligne et sont :
- il n'y a pas N/A en col 14 : cells(n,14) <>"N/A") donc il ya date ATA PAYS
- il n'y a pas N/A en col 13 : cells(n,13) <>"N/A") donc il y a date ATA SITE
- la diffference entre la date d'aujourd'hui et la date de livraison est inferieure à 8 et superieure ou egale à 0 : dif < 8 and dif >=0 donc on ne retient que les lignes avec une date de livraison dans les 7 derniers jours
Est ce enfin correspondant à ce que tu recherches ?
VIA55,
c'est exactement ça,il faut juste ajouter à cela la macro "sous douane" ci dessous.pour que les deux sort dans l'alerte
Voir ci dessous si la macro est correct. et je pense qu'il manque une code pour que ça marche en semble
If Cells(n, 14).Value <> "N/A" And Cells(n, 13).Value = "N/A" Then mes = mes & nom & String(15 - Len(nom), " ") & ord & String(15 - Len(ord), " ") & abw & String(20 - Len(abw), " ") & " Sous douane" Else GoTo suite
c'est exactement ça,il faut juste ajouter à cela la macro "sous douane" ci dessous.pour que les deux sort dans l'alerte
Voir ci dessous si la macro est correct. et je pense qu'il manque une code pour que ça marche en semble
If Cells(n, 14).Value <> "N/A" And Cells(n, 13).Value = "N/A" Then mes = mes & nom & String(15 - Len(nom), " ") & ord & String(15 - Len(ord), " ") & abw & String(20 - Len(abw), " ") & " Sous douane" Else GoTo suite
via55
Messages postés
14512
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 janvier 2025
2 741
16 mars 2013 à 01:24
16 mars 2013 à 01:24
Dans ce cas se sera plutôt cette macro :
On "elimine" d'abord ceux qui ont N/A en ATA PAYS avec goto suite
On ajoute les noms et N° au message à afficher
Puis si date en ATA SITE qui est compris dans les 7 derniers jours on ajoute la date et le nbre de jours de transit
Private Sub Workbook_Open()
On Error Resume Next
mes = "ALERTE pour sous douane :" & Chr(10) & Chr(10) & "SUPPLIER ORDER ABW DATE LIVRAISON et TRANSIT" & Chr(10) & Chr(10)
Sheets("Feuil3").Select
der = Range("L9").End(xlDown).Row 'recherche derniere cellule remplie à partir de L9
For n = 10 To der 'boucle depuis la ligne 10 jusqu'à la ligne der
nom = Cells(n, 3)
ord = Cells(n, 9)
abw = Cells(n, 4)
dif = Date - Cells(n, 13).Value
If Cells(n, 14).Value = "N/A" Then GoTo suite ' si N/A en col 14 on passe au suivant
mes = mes & nom & String(15 - Len(nom), " ") & ord & String(15 - Len(ord), " ") & abw & String(20 - Len(abw), " ") ' ajoute nom, oder et abW au message
If Cells(n, 13).Value <> "N/A" And dif < 8 And dif >= 0 Then mes = mes & " " & Cells(n, 13).Value & " " & (Cells(n, 13).Value - Cells(n, 12).Value + 3) & " jours" ' si col 13 remplie et date inferieure à aujourddhui entre 0 et 7 jours , ajoute date livraison et jours transit
mes = mes & Chr(10)
suite:
Next
MsgBox (mes)
End Sub
On "elimine" d'abord ceux qui ont N/A en ATA PAYS avec goto suite
On ajoute les noms et N° au message à afficher
Puis si date en ATA SITE qui est compris dans les 7 derniers jours on ajoute la date et le nbre de jours de transit
Private Sub Workbook_Open()
On Error Resume Next
mes = "ALERTE pour sous douane :" & Chr(10) & Chr(10) & "SUPPLIER ORDER ABW DATE LIVRAISON et TRANSIT" & Chr(10) & Chr(10)
Sheets("Feuil3").Select
der = Range("L9").End(xlDown).Row 'recherche derniere cellule remplie à partir de L9
For n = 10 To der 'boucle depuis la ligne 10 jusqu'à la ligne der
nom = Cells(n, 3)
ord = Cells(n, 9)
abw = Cells(n, 4)
dif = Date - Cells(n, 13).Value
If Cells(n, 14).Value = "N/A" Then GoTo suite ' si N/A en col 14 on passe au suivant
mes = mes & nom & String(15 - Len(nom), " ") & ord & String(15 - Len(ord), " ") & abw & String(20 - Len(abw), " ") ' ajoute nom, oder et abW au message
If Cells(n, 13).Value <> "N/A" And dif < 8 And dif >= 0 Then mes = mes & " " & Cells(n, 13).Value & " " & (Cells(n, 13).Value - Cells(n, 12).Value + 3) & " jours" ' si col 13 remplie et date inferieure à aujourddhui entre 0 et 7 jours , ajoute date livraison et jours transit
mes = mes & Chr(10)
suite:
Next
MsgBox (mes)
End Sub
VIA55,
tu m"a beaucoup aider j"ai reussi à le faire voir ci dessous la macro je voulais un petit detaille ça bloque à la fin .
Private Sub Workbook_Open()
On Error Resume Next
mes = "ALERTE pour sous douane :" & Chr(10) & Chr(10) & "SUPPLIER ORDER ABW DATE LIVRAISON et TRANSIT" & Chr(10) & Chr(10)
Sheets("Feuil3").Select
der = Range("L9").End(xlDown).Row 'recherche derniere cellule remplie à partir de L9
For n = 10 To der 'boucle depuis la ligne 10 jusqu'à la ligne der
nom = Cells(n, 3)
ord = Cells(n, 9)
abw = Cells(n, 4)
dif = Date - Cells(n, 13).Value
If Cells(n, 14).Value <> "N/A" And Cells(n, 13).Value <> "N/A" And dif < 8 and dif >=0 Then mes = mes & nom & String(15 - Len(nom), " ") & ord & String(15 - Len(ord), " ") & abw & String(20 - Len(abw), " ") & Cells(n, 13).Value & " " & (Cells(n, 13).Value - Cells(n, 12).Value + 3) & " jours" Else: GoTo suite
mes = mes & Chr(10)
suite:
Next
MsgBox (mes)
mes = "ALERTE pour :" & Chr(10) & Chr(10) & "SUPPLIER ORDER ABW LIVRAISON TRANSIT" & Chr(10) & Chr(10)
Sheets("Feuil3").Select
der = Range("L9").End(xlDown).Row 'recherche derniere cellule remplie à partir de L9
For n = 10 To der 'boucle depuis la ligne 10 jusqu'à la ligne der
nom = Cells(n, 3)
ord = Cells(n, 9)
abw = Cells(n, 4)
If Cells(n, 14).Value <> "N/A" And Cells(n, 13).Value="N/A" Then mes = mes & nom & String(15 - Len(nom), " ") & ord & String(15 - Len(ord), " ") & abw & String(20 - Len(abw), " ") & " Sous douane" Else GoTo suite
dif = Date - Cells(n, 14).Value
If dif < 8 Then mes = mes & "le " & Cells(n, 13).Value & " " & (Cells(n, 13).Value - Cells(n, 12).Value + 3)
mes = mes & Chr(10)
Next
MsgBox (mes)
End Sub
tu m"a beaucoup aider j"ai reussi à le faire voir ci dessous la macro je voulais un petit detaille ça bloque à la fin .
Private Sub Workbook_Open()
On Error Resume Next
mes = "ALERTE pour sous douane :" & Chr(10) & Chr(10) & "SUPPLIER ORDER ABW DATE LIVRAISON et TRANSIT" & Chr(10) & Chr(10)
Sheets("Feuil3").Select
der = Range("L9").End(xlDown).Row 'recherche derniere cellule remplie à partir de L9
For n = 10 To der 'boucle depuis la ligne 10 jusqu'à la ligne der
nom = Cells(n, 3)
ord = Cells(n, 9)
abw = Cells(n, 4)
dif = Date - Cells(n, 13).Value
If Cells(n, 14).Value <> "N/A" And Cells(n, 13).Value <> "N/A" And dif < 8 and dif >=0 Then mes = mes & nom & String(15 - Len(nom), " ") & ord & String(15 - Len(ord), " ") & abw & String(20 - Len(abw), " ") & Cells(n, 13).Value & " " & (Cells(n, 13).Value - Cells(n, 12).Value + 3) & " jours" Else: GoTo suite
mes = mes & Chr(10)
suite:
Next
MsgBox (mes)
mes = "ALERTE pour :" & Chr(10) & Chr(10) & "SUPPLIER ORDER ABW LIVRAISON TRANSIT" & Chr(10) & Chr(10)
Sheets("Feuil3").Select
der = Range("L9").End(xlDown).Row 'recherche derniere cellule remplie à partir de L9
For n = 10 To der 'boucle depuis la ligne 10 jusqu'à la ligne der
nom = Cells(n, 3)
ord = Cells(n, 9)
abw = Cells(n, 4)
If Cells(n, 14).Value <> "N/A" And Cells(n, 13).Value="N/A" Then mes = mes & nom & String(15 - Len(nom), " ") & ord & String(15 - Len(ord), " ") & abw & String(20 - Len(abw), " ") & " Sous douane" Else GoTo suite
dif = Date - Cells(n, 14).Value
If dif < 8 Then mes = mes & "le " & Cells(n, 13).Value & " " & (Cells(n, 13).Value - Cells(n, 12).Value + 3)
mes = mes & Chr(10)
Next
MsgBox (mes)
End Sub
via55
Messages postés
14512
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 janvier 2025
2 741
16 mars 2013 à 03:23
16 mars 2013 à 03:23
Tu veux afficher 2 boites de messages l'une apres l'autre si je comprends bien
La 1ere affiche les sous douane livrés
le ELse goto suite est inutile (ce qui est à effectuer peut tout être mis dans le IF) et la macro devient :
On Error Resume Next
mes = "ALERTE pour sous douane :" & Chr(10) & Chr(10) & "SUPPLIER ORDER ABW DATE LIVRAISON et TRANSIT" & Chr(10) & Chr(10)
Sheets("Feuil3").Select
der = Range("L9").End(xlDown).Row 'recherche derniere cellule remplie à partir de L9
For n = 10 To der 'boucle depuis la ligne 10 jusqu'à la ligne der
nom = Cells(n, 3)
ord = Cells(n, 9)
abw = Cells(n, 4)
dif = Date - Cells(n, 13).Value
If Cells(n, 14).Value <> "N/A" And Cells(n, 13).Value <> "N/A" And dif < 8 and dif >=0 Then mes = mes & nom & String(15 - Len(nom), " ") & ord & String(15 - Len(ord), " ") & abw & String(20 - Len(abw), " ") & Cells(n, 13).Value & " " & (Cells(n, 13).Value - Cells(n, 12).Value + 3) & " jours" & Chr(10)
Next
MsgBox (mes)
La 2nde affiche les sous douane non livrés
donc puisque pas de date de livraison pas besoin de calculer dif et le transit et la macro devient:
mes = "ALERTE pour :" & Chr(10) & Chr(10) & "SUPPLIER ORDER ABW " & Chr(10) & Chr(10)
Sheets("Feuil3").Select
der = Range("L9").End(xlDown).Row 'recherche derniere cellule remplie à partir de L9
For n = 10 To der 'boucle depuis la ligne 10 jusqu'à la ligne der
nom = Cells(n, 3)
ord = Cells(n, 9)
abw = Cells(n, 4)
If Cells(n, 14).Value <> "N/A" And Cells(n, 13).Value="N/A" Then mes = mes & nom & String(15 - Len(nom), " ") & ord & String(15 - Len(ord), " ") & abw & String(20 - Len(abw), " ") & Chr(10)
Next
MsgBox (mes
C'est çà où je me trompe sur ce que tu veux ?
La 1ere affiche les sous douane livrés
le ELse goto suite est inutile (ce qui est à effectuer peut tout être mis dans le IF) et la macro devient :
On Error Resume Next
mes = "ALERTE pour sous douane :" & Chr(10) & Chr(10) & "SUPPLIER ORDER ABW DATE LIVRAISON et TRANSIT" & Chr(10) & Chr(10)
Sheets("Feuil3").Select
der = Range("L9").End(xlDown).Row 'recherche derniere cellule remplie à partir de L9
For n = 10 To der 'boucle depuis la ligne 10 jusqu'à la ligne der
nom = Cells(n, 3)
ord = Cells(n, 9)
abw = Cells(n, 4)
dif = Date - Cells(n, 13).Value
If Cells(n, 14).Value <> "N/A" And Cells(n, 13).Value <> "N/A" And dif < 8 and dif >=0 Then mes = mes & nom & String(15 - Len(nom), " ") & ord & String(15 - Len(ord), " ") & abw & String(20 - Len(abw), " ") & Cells(n, 13).Value & " " & (Cells(n, 13).Value - Cells(n, 12).Value + 3) & " jours" & Chr(10)
Next
MsgBox (mes)
La 2nde affiche les sous douane non livrés
donc puisque pas de date de livraison pas besoin de calculer dif et le transit et la macro devient:
mes = "ALERTE pour :" & Chr(10) & Chr(10) & "SUPPLIER ORDER ABW " & Chr(10) & Chr(10)
Sheets("Feuil3").Select
der = Range("L9").End(xlDown).Row 'recherche derniere cellule remplie à partir de L9
For n = 10 To der 'boucle depuis la ligne 10 jusqu'à la ligne der
nom = Cells(n, 3)
ord = Cells(n, 9)
abw = Cells(n, 4)
If Cells(n, 14).Value <> "N/A" And Cells(n, 13).Value="N/A" Then mes = mes & nom & String(15 - Len(nom), " ") & ord & String(15 - Len(ord), " ") & abw & String(20 - Len(abw), " ") & Chr(10)
Next
MsgBox (mes
C'est çà où je me trompe sur ce que tu veux ?
VIA55,
Problème regler à 100/100 je suis vraiment satisfait.
je vous rémerci pour le temps que tu tes donnés pour faire ça .
Salutations
Problème regler à 100/100 je suis vraiment satisfait.
je vous rémerci pour le temps que tu tes donnés pour faire ça .
Salutations
VIA55,
Es ce que on faire de cette alerte un tableau avec des lignes et des colonnes.
permettant de ranger un peut les données.
Salutations
Es ce que on faire de cette alerte un tableau avec des lignes et des colonnes.
permettant de ranger un peut les données.
Salutations
VIA55,
petit problème la macro saute des donées quelle doit prendre .
alors je voudrai quelle prend toute les données de mon tableau qui sont concerner par la macro.
mon tableau est la même mais avec plusiuers ligne de donées.
slp pouvez vous m'aider
petit problème la macro saute des donées quelle doit prendre .
alors je voudrai quelle prend toute les données de mon tableau qui sont concerner par la macro.
mon tableau est la même mais avec plusiuers ligne de donées.
slp pouvez vous m'aider
via55
Messages postés
14512
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 janvier 2025
2 741
18 mars 2013 à 03:41
18 mars 2013 à 03:41
bonsoir
La macro fonctionne, si des données ont ignorées c'est soit qu'il y en a trop pour la box soit que les critères de tri ne sont pas bons
Quelles données manquent ?
Si ce sont les dernieres dans le tableau c'est problablement un probleme de taille limite du nombre de caracteres dans la box comme je te l'expliquais dans un précédent message et là rien à faire sauf à tout changer et ne plus récapituler les infos dans une box mais dans une autre feuille excel (où là tu ne seras pas limité)
Si au contraire ce sont des données dans tout le tableau qui manquent alorsc'est que le critères de tri de la macro ne sont pas les bons ou pas complets (pourtant ils ont été établis en fonction de tes renseignements et choix mais un élément a pu être oublié)
Dans l'attente de savoir
La macro fonctionne, si des données ont ignorées c'est soit qu'il y en a trop pour la box soit que les critères de tri ne sont pas bons
Quelles données manquent ?
Si ce sont les dernieres dans le tableau c'est problablement un probleme de taille limite du nombre de caracteres dans la box comme je te l'expliquais dans un précédent message et là rien à faire sauf à tout changer et ne plus récapituler les infos dans une box mais dans une autre feuille excel (où là tu ne seras pas limité)
Si au contraire ce sont des données dans tout le tableau qui manquent alorsc'est que le critères de tri de la macro ne sont pas les bons ou pas complets (pourtant ils ont été établis en fonction de tes renseignements et choix mais un élément a pu être oublié)
Dans l'attente de savoir
Via55,
c"est surement un problème de caractère par ce que ça prend que c'est genre de nonm: Seven bridge et allens diesel.
puuvez augmenter le caractère car j'ai des noms plus petit comme "tac pargiue"et poiuges" et des noms plus grand comme" anglu colt asgensu"
c"est surement un problème de caractère par ce que ça prend que c'est genre de nonm: Seven bridge et allens diesel.
puuvez augmenter le caractère car j'ai des noms plus petit comme "tac pargiue"et poiuges" et des noms plus grand comme" anglu colt asgensu"
via55
Messages postés
14512
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 janvier 2025
2 741
18 mars 2013 à 13:28
18 mars 2013 à 13:28
Je ne comprends rien !
Dans la macro il faut déjà augmenter les valeurs pour les espaces :
If Cells(n, 14).Value <> "N/A" And Cells(n, 13).Value <> "N/A" And dif < 8 and dif >=0 Then mes = mes & nom & String(15 - Len(nom), " ") & ord & String(15 - Len(ord), " ") & abw & String(20 - Len(abw), " ") & Cells(n, 13).Value & " " & (Cells(n, 13).Value - Cells(n, 12).Value + 3) & " jours" & Chr(10)
change ce chiffre 15 en 25 dans les 2 lignes de la macro où il y a l'expression ((15-Len(nom) pour le cas des livrés et des non livrés
Par contre si tu as trop de noms à afficher par rapport à la taille de la box fenetre, là il n'y a rien à faire car Ecel limite la box en caractères comme je t'ai déjà dit . Si c'est le cas il faut abandonner l'idée de vouloir faire une alerte par fenetre et proceder autrement c'est à dire reprendre completement la macro pour faire afficher les noms que tu veux non plus dans une box mais sur une feuille excel (dans un tableau meme si tu veux) car là tu ne seras pas limité
Dans la macro il faut déjà augmenter les valeurs pour les espaces :
If Cells(n, 14).Value <> "N/A" And Cells(n, 13).Value <> "N/A" And dif < 8 and dif >=0 Then mes = mes & nom & String(15 - Len(nom), " ") & ord & String(15 - Len(ord), " ") & abw & String(20 - Len(abw), " ") & Cells(n, 13).Value & " " & (Cells(n, 13).Value - Cells(n, 12).Value + 3) & " jours" & Chr(10)
change ce chiffre 15 en 25 dans les 2 lignes de la macro où il y a l'expression ((15-Len(nom) pour le cas des livrés et des non livrés
Par contre si tu as trop de noms à afficher par rapport à la taille de la box fenetre, là il n'y a rien à faire car Ecel limite la box en caractères comme je t'ai déjà dit . Si c'est le cas il faut abandonner l'idée de vouloir faire une alerte par fenetre et proceder autrement c'est à dire reprendre completement la macro pour faire afficher les noms que tu veux non plus dans une box mais sur une feuille excel (dans un tableau meme si tu veux) car là tu ne seras pas limité
CUTUITIOJ
Messages postés
6
Date d'inscription
lundi 18 mars 2013
Statut
Membre
Dernière intervention
30 novembre 2022
6
18 mars 2013 à 14:24
18 mars 2013 à 14:24
VIA55,
Voir ci-joint le fichier a voir si sa peut faire ou si je doit abondonner l'idée.
veuillez suprimer ce fichier àprès avoir fait une correction pour m'envoyer.
https://www.cjoint.com/?3CsoxjiqlUi
Voir ci-joint le fichier a voir si sa peut faire ou si je doit abondonner l'idée.
veuillez suprimer ce fichier àprès avoir fait une correction pour m'envoyer.
https://www.cjoint.com/?3CsoxjiqlUi
via55
Messages postés
14512
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 janvier 2025
2 741
18 mars 2013 à 14:31
18 mars 2013 à 14:31
Tu m'envoie le fichier mais sans macro !!
De plus il n'y a pas dans le fichier les noms que tu citais dans un précédent message
Que veux tu qu'on fasse ?
Passes en message privé si tu veux, je n'avais pas vu que m'en avais envoyé un avant
De plus il n'y a pas dans le fichier les noms que tu citais dans un précédent message
Que veux tu qu'on fasse ?
Passes en message privé si tu veux, je n'avais pas vu que m'en avais envoyé un avant
13 mars 2013 à 23:13
Private Sub Workbook_Open()
On Error Resume Next
mes = "ALERTE pour :" & Chr(10) & Chr(10)
Sheets("Feuil1").Select
der = Range("L9").End(xlDown).Row 'recherche derniere cellule remplie à partir de L9
For n = 10 To der 'boucle depuis la ligne 10 jusqu'à la ligne der
If Cells(n, 4).Value <> "" Then mes = mes & Cells(n, 3) & " * " & Cells(n, 9) & " * " & Cells(n, 4) Else GoTo suite
If Cells(n, 14).Value <> "N/A" Then mes = mes & " * Sous douane"
If Cells(n, 13).Value <> "N/A" Then mes = mes & " * Livrer le " & Cells(n, 13).Value & " Transit = " & (Cells(n, 13).Value - Cells(n, 12).Value + 3)
mes = mes & Chr(10)
suite:
Next
MsgBox (mes)
End Sub
En espérant que ça aille