Récupérer une adresse

Francis

XLDnaute Junior
Bonjour le forum
J’ai essayé de pondre une petite application, mais je suis perdu.
Si quelqu’un peut me dépanner ou me guider il sera le bienvenu.
Dans la colonne ' B ' il y a des dates de réintégrations de matériel. Dans les autres, le nom des personnes qui ont emprunté ce matériel. A l’ouverture de la feuille je veux qu’il me dise qu’untel est en retard
Merci pour votre aide
Francis

Private Sub Worksheet_Activate()
Dim c As Range
For Each c In Range('b7:b25')
If c.Value <= Date And Not IsEmpty(c) Then
‘ chercher dans la ligne o&ugrave; il y a ' c.adress ' le premier mot, me l’extraire et ensuite me faire apparaître un MsgBox contenant ' Untel (le premier mot) est en retard '
End If
Next c
End Sub
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Bonjour

Private Sub Worksheet_Activate()
Dim c As Range
For Each c In Range('b7:b25')
If c.Value <= Date And Not IsEmpty(c) Then
msgbox 'range('C' & c.row) est en retard'
End If
Next c
End Sub

C étant la colonne du nom des personnes dans mon exemple

Bon courage
 
F

Francis

Guest
Tout d'abord merci pour ta réponse rapide.
Je me suis mal exprimé, le nom du retardataire n'est pas obligatoirement dans 'C' . Il est dans la ligne cherchée et c'est toujours le premier mot trouvé. Donc il faut surement passer par 'Selection.End(xlToRight).
Mais je ne sais pas o&ugrave; le placer.
Merci si tu peux me guider.
Francis
 
F

Francis

Guest
Bonjour Pascal et le Forum

Dans la colonne ' B ' il y a les dates de réintégrations de matériel. Dans les autres de C à P, il y a le nom des personnes qui ont emprunté un matériel. Chaque colonne, de C à P, représente le matériel emprunté.
C'est à dire qu' il y a au moins une fois le nom d'un emprunteur dans les lignes 7 à 25 des colonnes C à P.
Donc je cherche la phrase magique qui fait:
chercher dans la ligne o&ugrave; il y a ' c.adress ' le premier mot qui apparait dans les colonnes C à P, me l’extraire et ensuite me faire apparaître un MsgBox contenant ' Untel (le premier mot trouvé entre C et P) est en retard ' .
Merci
Francis
 

PascalXLD

XLDnaute Barbatruc
Modérateur
RE

Bon essaies ceci si j'ai bien compris ce coup-ci ;)

Private Sub Worksheet_Activate()
Dim c As Range
dim z as byte
For Each c In Range('b7:b25')
If c.Value <= Date And Not IsEmpty(c) Then
for z=3 to 16
if cells(c.row,z)<>'' then
msgbox cells(c.row,z) & ' est en retard'
exit for
endif
next
End If

Next c
End Sub

Bon courage
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Pascal, Francis, le Forum

Une approche plus dynamique, puisque le code autogère les dimensions de la Feuille et en prime fait la Liste des retardataires Matériel par Matériel (pour autant que ce soit le Heading de Colonne En Ligne 1)

Et puis vu l'indentation de la cascade de If, j'en profite pour tester le Lien supprimé


Option Explicit

Sub TheSearcher()
Dim Plage As Range
Dim CellDate As Range, CellinRow As Range
Dim TheListOfLatePeople As String


With Sheets('Database')
Set Plage = .Range('B2:B' & .Range('B35000').End(xlUp).Row)
&nbsp;
For Each CellDate In Plage
&nbsp; &nbsp;
If IsDate(CellDate) Then
&nbsp; &nbsp; &nbsp; &nbsp;
If CDate(CellDate) <= Date Then
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
For Each CellinRow In .Range(.Cells(CellDate.Row, 3), .Cells(CellDate.Row, _
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (.Cells(CellDate.Row, 3).End(xlToRight).Column)))
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
If CellinRow <> '' Then
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TheListOfLatePeople = TheListOfLatePeople & 'Pour Article ' & _
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .Cells(1, CellinRow.Column) & vbTab & CellinRow.Value & vbCrLf
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
Exit For 'NB Si on doit sortir après le premier nom trouvé...
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
End If
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
Next
&nbsp; &nbsp; &nbsp; &nbsp;
End If
&nbsp; &nbsp;
End If
&nbsp;
Next
End With

MsgBox 'Voici la liste des Retardataires, Articles par Articles' & vbCrLf & TheListOfLatePeople

End Sub



Bon Après Midi
@+Thierry

Re Arf !!!

Message édité par: _Thierry, à: 14/03/2005 16:26
 

Francis

XLDnaute Junior
Bonsoir Pascal, Thierry et le Forum
Je viens de découvrir le code de Thierry qui convient mieux à l’usage : Car s’il y a 10 retardataires, il faut que je ferme dix fois le Msgbox. Et c’est souvent le cas….
Mais je n’arrive pas à me dépêtrer avec son code.
Il faudrait modifier le code de Pascal afin qu’il n’y ait qu’un seul Msgbox qui affiche tous les retardataires d’un seul coup.
Merci d’avance si vous voulez vous repencher sur mon problème
Francis
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Bonjour

En adaptant mon code

Private Sub Worksheet_Activate()
Dim c As Range
dim z as byte
dim MesRetards as string
Mesretards=''
For Each c In Range('b7:b25')
If c.Value <= Date And Not IsEmpty(c) Then
for z=3 to 16
if cells(c.row,z)<>'' then
MesRetards= MesRetards & cells(c.row,z) & ' '
exit for
endif
next
End If
Next c
Msgbox 'Retardataires : ' & MesRetards
End Sub

Bonne journée
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Pascal, Francis, le Forum

Pour la lisibilité du message, je verrai bien un retour charriot entre chaque Retardataires....

MesRetards= MesRetards & Cells(c.Row,z) & VbCrLf
Puis :
Msgbox 'Retardataires : ' & VbCrLf & MesRetards

Et sinon vu que tu déclares MesRetards As String en Local dans la Sub, pas vraiment besoin de l'initialiser à '' au début.

Bonne Journée
@+Thierry
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Salut

Oui en effet Thierry là j'ai fait dans le vite fait sans trop faire attention à la présentation , don cen effet le retour à la ligne est plus 'joli'

Pour la mise à zéro de MesRetards et oui une vieille habitude d'initialiser des variables même quand ce n'est pas nécessaire

Bonne journée à toi
 
F

francis

Guest
Bonjour Pascal Thierry et le Forum
Bravo à vous deux. C'est un vrai plaisir de se faire aider par des passionnés comme vous, et quelle rapidité.
Vous verrez surement encore de mes appels parce que je m'initie en Vba et ce n'est pas si évident.
essayer de comprendre une solution n'est pas la même chose que pondre la solution!
Merci encore
Francis
 

Statistiques des forums

Discussions
314 017
Messages
2 104 582
Membres
109 083
dernier inscrit
Stef06