Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
724 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  format de cellule excel [résolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

format de cellule excel [résolu]

n°1231719
amsterdam
Posté le 26-10-2005 à 17:25:53  profilanswer
 

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
mood
Publicité
Posté le 26-10-2005 à 17:25:53  profilanswer
 

n°1231766
galopin01
Posté le 26-10-2005 à 18:06:17  profilanswer
 

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
n°1231793
Fred_l
Posté le 26-10-2005 à 18:36:59  profilanswer
 

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
 
@+

n°1231794
Fred_l
Posté le 26-10-2005 à 18:39:20  profilanswer
 

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" )
 
@+

n°1231805
amsterdam_​bis
Posté le 26-10-2005 à 18:51:41  profilanswer
 

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 @+

n°1232775
amsterdam
Posté le 27-10-2005 à 17:20:30  profilanswer
 

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
n°1239277
Fred_l
Posté le 05-11-2005 à 11:31:48  profilanswer
 

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

n°1614857
maestro130​3
Posté le 25-09-2007 à 10:22:26  profilanswer
 

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  

n°1615049
Paul Hood
Posté le 25-09-2007 à 14:12:36  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  format de cellule excel [résolu]

 

Sujets relatifs
[RESOLU] Struts iterate et options[ PHP ][ Resolu ] Upload et verification d'un fichier binaire
[Résolu][VBA] Problème de "" ...numéro de feuille variable [Résolu]
Textes dynamiques chinois/français [resolu]Date format chaine de caractere
[HTML] Largeur de cellule fixe avec retour à la ligne autoRESOLU - [EXCEL-VBA] Comment exécuter une macro si excel perd le focus
Aide pour une macro excel 
Plus de sujets relatifs à : format de cellule excel [résolu]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR