Compiler plusieurs Codes / Plusieurs alerte

Y compris Power BI, Power Query et toute autre question en lien avec Excel
N
Noemie.L
Nouveau venu
Nouveau venu
Messages : 9
Inscrit le : 26 novembre 2014
Version d'Excel : 2010

Message par Noemie.L » 1 décembre 2014, 14:54

Bonjour,

J'ai un code qui me permets d'avoir un MsgBox 1 mois avant l'expiration de la date de validité de certain documents.
Il est relié uniquement à la colonne "G" Je voudrais le même ou presque pour plusieurs autres colonnes en le gardant sur " Workbook_Open"

Qu'est ce que je peux faire ? y-a-t-il un code qui signifie "ensuite" ? ou y a-t-il un code à exécuter ?

Voilà le code :
Private Sub Workbook_open()
Dim g As Range
Application.ScreenUpdating = False
With Sheets("Feuil1") ' à modifier
For Each g In .Range(.[G3], .[G65536].End(xlUp))
    If g.Value < DateSerial(Year(Date), Month(Date) + 1, Day(Date)) Then
        If txt = "" Then txt = "Avertissement : Expiration Attestation URSSAF:" & vbCrLf
        txt = txt & g.Offset(, -6) & ", " & g.Offset(, -5) & vbCrLf
    End If
Next g
If txt <> "" Then MsgBox txt
End With
Application.ScreenUpdating = True
End Sub 
Avatar du membre
James007
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'007
Appréciations reçues : 413
Inscrit le : 30 août 2014
Version d'Excel : 2007 EN

Message par James007 » 1 décembre 2014, 16:21

Bonjour,

Il te suffit de définir une plage ... celle dont tu as besoin ...

Et ensuite de simplement modifier ton code au niveau de l'instruction
For Each g In .Range(.[G3], .[G65536].End(xlUp))
pour avoir à la place
For Each g In MaPlage
A+

:)

Quand on n’a qu’un marteau, tous les problèmes deviennent des clous…
N
Noemie.L
Nouveau venu
Nouveau venu
Messages : 9
Inscrit le : 26 novembre 2014
Version d'Excel : 2010

Message par Noemie.L » 1 décembre 2014, 16:56

En fait je me suis mal exprimé voilà ce que je voudrais exactement :

Le code marche bien sauf qu'il affiche toujours le MsgBox qui est en gras et souligné. (c'est à dire le premier)
Comment je peux faire pour qu'il affiche les MsgBox propre a chaque partie pour chaque "partie"

pour la colonne G je veux qu'il affiche ça : "Avertissement : Expiration Attestation URSSAF"
pour la colonne Y je veux qu'il affiche ça : "Avertissement : Expiration Extrait Kbis"
pour la colonne AA je veux qu'il affiche ça : "Avertissement : Expiration de la liste des salariés étrangers"

Merci par avance pour ton aide ^^


Voilà le code :
Private Sub Workbook_open()
Dim g As Range
Application.ScreenUpdating = False
With Sheets("Feuil1") ' à modifier
For Each g In .Range(.[G3], .[G65536].End(xlUp))
If g.Value < DateSerial(Year(Date), Month(Date) + 1, Day(Date)) Then
If txt = "" Then txt = "Avertissement : Expiration Attestation URSSAF:" & vbCrLf
txt = txt & g.Offset(, -6) & ", " & g.Offset(, -5) & vbCrLf
End If
Next g
If txt <> "" Then MsgBox txt
End With
Application.ScreenUpdating = True

Application.ScreenUpdating = False
With Sheets("Feuil1") ' à modifier
For Each y In .Range(.[Y3], .[Y65536].End(xlUp))
If y.Value < DateSerial(Year(Date), Month(Date) + 1, Day(Date)) Then
If txt = "" Then txt = "Avertissement : Expiration Extrait Kbis:" & vbCrLf
txt = txt & y.Offset(, -24) & ", " & y.Offset(, -23) & vbCrLf
End If
Next y
If txt <> "" Then MsgBox txt
End With
Application.ScreenUpdating = True

Dim aa As Range
Application.ScreenUpdating = False
With Sheets("Feuil1") ' à modifier
For Each aa In .Range(.[AA3], .[AA65536].End(xlUp))
If aa.Value < DateSerial(Year(Date), Month(Date) + 1, Day(Date)) Then
If txt = "" Then txt = "Avertissement : Expiration de la liste des salariés étrangers:" & vbCrLf
txt = txt & aa.Offset(, -26) & ", " & aa.Offset(, -25) & vbCrLf
End If
Next aa
If txt <> "" Then MsgBox txt
End With
Application.ScreenUpdating = True

End Sub
Avatar du membre
James007
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'007
Appréciations reçues : 413
Inscrit le : 30 août 2014
Version d'Excel : 2007 EN

Message par James007 » 1 décembre 2014, 17:03

Re,

Il me semblait bien que cette question allait survenir ... :wink:

Te sens-tu capable d'insérer un test sur la colonne ... pour modifier le texte à afficher en conséquence ...???
A+

:)

Quand on n’a qu’un marteau, tous les problèmes deviennent des clous…
N
Noemie.L
Nouveau venu
Nouveau venu
Messages : 9
Inscrit le : 26 novembre 2014
Version d'Excel : 2010

Message par Noemie.L » 1 décembre 2014, 17:09

Le test avec la touche "F8" ? oui je le fais il execute le code sans problème sauf qu'il affiche tjrs le 1er msg.
C'est ce que tu voulais dire ?
Sinon explique moi stp ce que je pourrais éventuellement faire, je pense et j’espère être assez débrouillarde ^^
Avatar du membre
James007
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'007
Appréciations reçues : 413
Inscrit le : 30 août 2014
Version d'Excel : 2007 EN

Message par James007 » 1 décembre 2014, 17:13

Noemie.L a écrit :Le test avec la touche "F8" ? oui je le fais il execute le code sans problème sauf qu'il affiche tjrs le 1er msg.
C'est ce que tu voulais dire ?
Sinon explique moi stp ce que je pourrais éventuellement faire, je pense et j’espère être assez débrouillarde ^^
Pardon ... je ne suis pas exprimé très clairement ...

Insérer un test ... cela signifie dans le code, écrire un test

If la colonne est G then
....

If la colonne est Y then

...
et enfin la colonne est AA
A+

:)

Quand on n’a qu’un marteau, tous les problèmes deviennent des clous…
N
Noemie.L
Nouveau venu
Nouveau venu
Messages : 9
Inscrit le : 26 novembre 2014
Version d'Excel : 2010

Message par Noemie.L » 1 décembre 2014, 17:15

Voilà le fichier si ça peut t'aider à comprendre mon cas :)
Nouveau Feuille de calcul Microsoft Excel (3).xlsm
(32.86 Kio) Téléchargé 13 fois
Avatar du membre
James007
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'007
Appréciations reçues : 413
Inscrit le : 30 août 2014
Version d'Excel : 2007 EN

Message par James007 » 1 décembre 2014, 17:34

Re,

Tu peux tester le code suivant ... :wink:
Private Sub Workbook_open()
Dim c As Range
Dim plage As Range
Dim txt As String

Set plage = Feuil1.Range("G3:G100,Y3:Y100,AA3:AA100")

Application.ScreenUpdating = False

For Each c In plage
    If c.Value <> "" And c.Value < DateSerial(Year(Date), Month(Date) + 1, Day(Date)) Then
        Select Case c.Column
          Case 7
          If txt = "" Then txt = "Avertissement : Expiration Attestation URSSAF:" & vbCrLf
          txt = txt & c.Offset(, -6) & ", " & c.Offset(, -5) & vbCrLf
          Case 25
          If txt = "" Then txt = "Avertissement : Expiration Extrait Kbis:" & vbCrLf
          txt = txt & c.Offset(, -24) & ", " & c.Offset(, -23) & vbCrLf
          Case 27
          If txt = "" Then txt = "Avertissement : Expiration de la liste des salariés étrangers:" & vbCrLf
          txt = txt & c.Offset(, -26) & ", " & c.Offset(, -25) & vbCrLf
        End Select
    End If
Next c
If txt <> "" Then MsgBox txt

Application.ScreenUpdating = True

End Sub
A+

:)

Quand on n’a qu’un marteau, tous les problèmes deviennent des clous…
N
Noemie.L
Nouveau venu
Nouveau venu
Messages : 9
Inscrit le : 26 novembre 2014
Version d'Excel : 2010

Message par Noemie.L » 1 décembre 2014, 18:06

Excellent ! Mrc bcp. Je vais essayer ce code.
Avatar du membre
James007
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'007
Appréciations reçues : 413
Inscrit le : 30 août 2014
Version d'Excel : 2007 EN

Message par James007 » 1 décembre 2014, 19:51

Noemie.L a écrit :Excellent ! Mrc bcp. Je vais essayer ce code.

Tiens moi au courant pour savoir si çà joue ... ou pas ... :wink:
A+

:)

Quand on n’a qu’un marteau, tous les problèmes deviennent des clous…
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message