Excel VB Déf de variables+ pb copie cellule

Brabus -  
 Utilisateur anonyme -
Bonjour à tous,
Je viens vous demander un peu d'aide car j'ai un problème de copie de cellules.

J'ai donc un fichir excel qui recherche des paramètres dans un autre fichier excel. Le problème est que lorsque le paramètre est une date, ce n'est pas toujours la meme qui est copiée. Par exemple le 12/07/2007 devient le 07/12/2007 (Les formats sont exactements les memes). J'ai aussi un problème pour les chiffres qui sont copiés avec bcp de "0" (0.29 devient 000000.29) Une info me signale que ma cellule est au format texte mais lorsque je change le format rien ne change et je ne peux pas le changer avec les infos vu le nombre de paramètres.

Je me demande si ces problèmes ne viennent pas de ma définition de variables.
Je les ai défini par "As Variant"
et je copie les cellules avec la formule suivante : "Sheets("Feuil1").Cells(b - 5, 7) = k"

Ce serait très très très sympa de m'aider.
Merci d'avance
Configuration: Windows XP
Internet Explorer 6.0

1 réponse

  1. Utilisateur anonyme
     
    Bonjour,

    Les Dates sont en définitive des données relativement difficile à traiter.
    Il en existe sous plusieurs formes et là est bien le problème. D'un systême
    à l'autre Windows permet de choisir un type d'affichage de la date, et
    Excel permet de personnaliser aussi ce type d'affichage.

    Ce qu'il faut bien comprendre ici, ni Windows, ni Excel ne modifie le
    type de la données, il ne modifie que le type d'affichage. Pour le pc
    une date reste une date.

    Pour capturer une entrée date, il est certe souhaitable de typé la variable
    d'entrée en type [ Variant ] pour englober tous les types d'affichage disponible.
    Ensuite en utilisant la fonction [ IsDate ]

    Une fois que le sytème a reconnu une date celle-ci prend le format d'affichage
    de Windows [ Options Régionales et Linguistiques ], il est alors possible de
    forcer un format d'affichage dans Excel en formattant celui-ci avec l'instruction
    [ Format ].

    Démonstration :
    Option Explicit
    '
    
    Sub Affiche()
    
        Dim UneDate As Variant, UneReponse As Boolean, UneVraiDate As Date
        Dim Boucle_Ligne As Long, Boucle_Colonne As Long
        
        Boucle_Ligne = 5: Boucle_Colonne = 1
        UneDate = "Chaine_De_Caractères"
        UneReponse = IsDate(UneDate)    ' Renvoie False.
        MsgBox UneReponse & vbLf & Format(UneDate, "dd/mm/yyyy")
        UneDate = "12/07/2007"
        UneReponse = IsDate(UneDate)    ' Renvoie True.
        MsgBox UneReponse & vbLf & Format(UneDate, "dd/mm/yyyy")
        UneVraiDate = UneDate
        MsgBox Format(UneVraiDate, "dd/mm/yyyy")
        
        Range("A5").Value = UneDate
        Range("A6").Value = UneVraiDate
        
        If (IsDate(UneDate)) Then
            ActiveCell.Offset(Boucle_Ligne, Boucle_Colonne).Value = _
                                        Format(UneDate, "dd/mm/yyyy")
        End If
        
    End Sub
    '
    


    Lupin
    0