Excel VB Déf de variables+ pb copie cellule

Fermé
Brabus - 13 juil. 2007 à 11:19
 Utilisateur anonyme - 14 juil. 2007 à 15:27
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

1 réponse

Utilisateur anonyme
14 juil. 2007 à 15:27
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