format de cellule excel [résolu]

format de cellule excel [résolu] - VB/VBA/VBS - Programmation

Marsh Posté le 26-10-2005 à 17:25:53    

Bonjour, voilà mon problème.
J'ai une colonne remplie de cellules contenant des dates que je doit récupérer, jusque là ça va.
Par contre certaines cellules contiennent le texte "en cours" et ça me pose problème.
Est-il possible de vérifier le type de donnée contenu dans la cellule pour pouvoir mettre une gestion d'erreur en place ?
 
J'ai réussi à régler le cas des lignes vides mais là je sèche et mon bouquin de poche n'a sans doute pas toutes les informations.
 
Si qqun a une idée.
Merci d'avance. :)


Message édité par amsterdam le 27-10-2005 à 17:31:26
Reply

Marsh Posté le 26-10-2005 à 17:25:53   

Reply

Marsh Posté le 26-10-2005 à 18:06:17    

bonsoir,
La fonction IsDate renvoie la valeur True si l'expression est une date ou peut être reconnue en tant que date.
 
Sub test()
If Not IsDate(ActiveCell) Then MsgBox ActiveCell
End Sub
 
A+


Message édité par galopin01 le 26-10-2005 à 18:09:17

---------------
roger
Reply

Marsh Posté le 26-10-2005 à 18:36:59    

J'espère que ça t'ira :
 
Dim Rng As Range
Dim j As Integer
Dim EnfOfCells As Integer
 
EndOfCells = 50
j = 0
Set Rng = Range("A1" )
 
For i = 0 To EndOfCells
    Rng = Rng.Offset(1)
    Rng.Offset(i, j).Select
    If IsDate(Rng.Offset(i, j).Value) Then 'NumberFormat = "m/d/yyyy" Then
        Rng.Offset(i, j + 2).Value = "Ici c'est une date "
    Else
        If LCase(Rng.Offset(i, j).Value) = LCase("En cours" ) Then
            Rng.Offset(i, j + 2).Value = "Ici c'est En cours"
        Else
            If Rng.Offset(i, j).Value = "" Then Rng.Offset(i, j + 2).Value = "Ici c'est Vide ! "
        End If
    End If
Next i
 
@+

Reply

Marsh Posté le 26-10-2005 à 18:39:20    

OUi, tu as soit :
 
Range.NumberFormat pour tester ( mais pas top si tu as déjà eu une date à la place )
 
Soit la fonction IsDate(Range("Ax" )
 
@+

Reply

Marsh Posté le 26-10-2005 à 18:51:41    

Salut ici amsterdam même si ça ne se voit pa trop bien pour l'instant :d ( problème de mot de passe qui ne passe plus).
Je vais tester tout ça et je vous dirait ce qu'il en est.
Merci et @+

Reply

Marsh Posté le 27-10-2005 à 17:20:30    

C'est bon ça fonctionne. :)
Enfin j'ai quand même ajouté un variable pour faire le test dessus mais c'est plus lié à l'état de mon code on va dire. :d
 
Par contre petite question en passant, comment lui dire de bosser sur une autre feuille du classeur ?
Car j'ai fait le test sur une petite liste de dates sur la même feuille que le graphique mais en fait les vraies données sont sur la feuille2.


Message édité par amsterdam le 27-10-2005 à 17:21:25
Reply

Marsh Posté le 05-11-2005 à 11:31:48    

Il suffit de se positionner sur la feuille avec sheets..
 
Ici les date sont sur la feille2 et le résultat sur la feuille1
 

Citation :

Dim Rng As Range
Dim j As Integer
Dim EnfOfCells As Integer
 
 
EndOfCells = 50
j = 0
 
For i = 0 To EndOfCells
    Sheets("Feuil2" ).Select
    Set Rng = Range("A1" )
    Rng.Offset(i, j).Select
    If IsDate(Rng.Offset(i, j).Value) Then
        Sheets("Feuil1" ).Select
        Set Rng = Range("A1" )
        Rng.Offset(i, j + 2).Value = "Ici c'est une date "
    Else
        If LCase(Rng.Offset(i, j).Value) = LCase("En cours" ) Then
            Sheets("Feuil1" ).Select
            Set Rng = Range("A1" )
            Rng.Offset(i, j + 2).Value = "Ici c'est En cours"
        Else
            If Rng.Offset(i, j).Value = "" Then
            Sheets("Feuil1" ).Select
            Set Rng = Range("A1" )
            Rng.Offset(i, j + 2).Value = "Ici c'est Vide ! "
            End If
        End If
    End If
     
Next i

Reply

Marsh Posté le 25-09-2007 à 10:22:26    

Bonjour à tous, et excusez moi de réveiller un sujet resté longtemps inactif. Mais j'ai un problème que je n'arrive pas à regler facilement.
J'ai deux feuilles "feuil13 ET "feuil2".
feuil2 est composéde 4 colonnes:
nom, code, date et prix
de même la feuil1 est composée de 4 colonnes nom, code, date et prix.
Si un correspondant du code dans feuil2 est trouvé dans feuil1 alors la colonne 5 de feuil1 est mise  à jour par le prix correspondant de feuil2. Sinon une ligne est rajoutée à la fin de la feuil1 avec les les informations de la feuil2 disposées d'une certaine manière.
 
Sur un autre forum on m'a aidé par le code suivant qui fait presque tout sauf la partie où le résultat du "SI" est positif.
Dim wksProj As Worksheet 'Feuille ¨projet
  Dim wksCde As Worksheet 'Feuille Commande
  Dim strNom As String 'Valeur à chercher
  Dim rDest As Range ' Plage de recherche
  Dim rSource As Range
  Dim val As Variant
  Dim c As Range
  Dim cName As Range
  Set wksProj = Sheets("feuil1" )
  Set wksCde = Sheets("feuil2" )
  Set rSource = Range(wksCde.Cells(1, 2), wksCde.Cells(65535, 2).End(xlUp))
  wksProj.Select ' pour parcourir les codes à chercher
   
  For Each cName In rSource
    strNom = cName.Value 'Récupere la valeur à chercher
    Set rDest = wksProj.Range("B:B" )
    Set c = rDest.Find(strNom)
     
    If c Is Nothing Then
     
      wksProj.Cells(65535, 2).End(xlUp).Offset(1, -1) = cName.Cells(1, 0)
      wksProj.Cells(65535, 2).End(xlUp).Offset(1, 0) = cName.Cells(1, 1)
      wksProj.Cells(65535, 2).End(xlUp).Offset(0, 2) = 100
      wksProj.Cells(65535, 2).End(xlUp).Offset(0, 3) = cName.Cells(1, 3)
    Else
       
     cName.Offset(0, 2).Copy c.Offset(0, 3)
     
     
    End If
  Next cName
 
la ligne      cName.Offset(0, 2).Copy c.Offset(0, 3) ne fait pas ce que j'ne attends. Quelqu'un peut m'aider à dire où se trouve le bug? Merci.
 
 
 la feuil2 est parcouru et pour chaque code de feuil2, une recherche est faite dans feuil1.
Si le code corrsepondant est trouvé dans feuil2 alors  

Reply

Marsh Posté le 25-09-2007 à 14:12:36    

Voilà ce qu'on appelle un arrêt brutal !!
 
....mais quel suspens !!! :D  
 
Alors quoi ? il se passe quoi après...
 
va-t-il falloir attendre une semaine entière avant d'avoir la suite ?


Message édité par Paul Hood le 25-09-2007 à 14:13:05
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed