IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

aide pour copier/coller et pour trier


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut aide pour copier/coller et pour trier
    Bonjour à tous,

    Je rencontre des problèmes pour faire un programme d'acquisition de données. Si quelqu'un peut me venir en aide, ça serait bien sympa.
    J'ai délimité les zones de turbulences par des points d'interrogation.

    Merci d'avance.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    Sub Macro()
     
    Dim Date_selection As String
    Dim Nom_fichier As String
    Dim i As Byte
    Dim Quitter As Byte
     
    Date_selection = Feuil8.Range("D3").Value
     
     i = 0
     
    Do While Quitter = 0 'boucle tant que la variable Quitter est égale à 0
    'récupération de données
     
     
    ' ici    
    ' ???????If i <> 0 And 10 And 20 And 30 ??????????Then
    '    
     
     
        Nom_fichier = Feuil8.Range("C8").Offset(0, i).Value + "0" + Date_selection
     
     
     
        With ActiveSheet.QueryTables.Add(Connection:= _
            "TEXT;C:\Documents and Settings\Administrator\Desktop\degrémont\Données Macro\" & Nom_fichier & ".txt" _
            , Destination:=Range("CD9"))
            .Name = Nom_fichier
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = False
            .RefreshPeriod = 0
            .TextFilePromptOnRefresh = False
            .TextFilePlatform = 1252
            .TextFileStartRow = 1
            .TextFileParseType = xlDelimited
            .TextFileTextQualifier = xlTextQualifierDoubleQuote
            .TextFileConsecutiveDelimiter = False
            .TextFileTabDelimiter = True
            .TextFileSemicolonDelimiter = True
            .TextFileCommaDelimiter = False
            .TextFileSpaceDelimiter = False
            .TextFileColumnDataTypes = Array(5, 1, 1)
            .TextFileTrailingMinusNumbers = True
            .Refresh BackgroundQuery:=False
        End With
     
    ' et encore ici   
    '         ??????????????????If i <> 1 And 11 And 21  
    ' ?????????????????????????Then
    '
     
                Feuil8.Range("CF9:CF65536").ClearContents
                Feuil8.Range("CD9:CD65536").ClearContents
     
                Feuil8.Range("CE9:CE65536").Copy
                Feuil8.Range("D9").Offset(0, i).Paste
     
     
            Else
     
                Feuil8.Range("CF9:CF65536").ClearContents
     
     
    ' et ici encore...    
    '       ????????????Feuil8.Range("CE9:CE65536").Copy
    '      ????????????? Feuil8.Range("D9").Offset(0, i).Paste
    '       
    '      ??????????? Feuil8.Range("CD9:CD65536").Copy _
    '         ????????   Destination:=Feuil8.????????????????
    '         End If
    '        
     
        Else
     
    ' puis ici    
    '            ????????????If i = 0 Or 10 Or 20 ?????????????Then
    '        
     
                Else
     
            Quitter = 1
     
                End If
     
        End If
        i = i + 1
     
        Loop
     
    End Sub

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut chamoxx et le forum
    Journée "critique"
    Pourquoi donner un code qui présente des anomalies de fonctionnement sans expliquer ce qu'il devrait faire ? Pourquoi devrais-je me forcer à imaginer les données et le résultat attendu sans possibilité d'erreur alors que le demandeur à la flemme d'expliquer le but et les difficultés rencontrées ?

    I est une variable fonction du nombre de ligne : Pourquoi en Byte ? les lignes peuvent aller jusqu'à 65536, même si on suppose que non. À part problème de mémoire (et à 10 octets prêt, ça m'étonnerait), autant le déclarer en Long.

    Quitter : pourquoi ne pas le déclarer en Boolean ? True/false, c'est pas beaucoup plus long à écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    If i <> 0 And 10<> 0 And 20<> 0 And 30<> 0 then
    .............'    
    If i <> 1 And 11 <> 1 And 21 <> 1 Then
    '................................0
    '       ????????????Feuil8.Range("CE9:CE65536").Copy
    '      ????????????? Feuil8.Range("D9").Offset(0, i).Paste
    'Valeur de i ? elle est bien inférieure à 252 ?   i+4<=256  
    '      ??????????? Feuil8.Range("CD9:CD65536").Copy _
    '         ????????   Destination:=Feuil8.????????????????
    ' C'est mieux, mais dans ce cas tu ne peux utiliser Offset (incompatible
    'avec copy direct). tu peux utiliser Feuil8.cells(9,4+i ) ou
    'Feuil8.cells(9,Feuil8.Range("D9").column+i )         
     
    If i = 0 Or 10 = 0  Or 20 = 0  Then
    ' vérifier si on est dans la bonne partie des tests (avec des if imbriqués...
            Quitter = true
    Pas envie de m'implquer plus, ne connaissant rien du but à atteinde, mais
    Feuil8.Range("CD9:CD65536") donne 65527 lignes, donc elle ne peut être copiée que de la ligne 1 à la ligne 9 et dans une colonne inférieure à IV (pour Excel 2003 et antérieur).
    A+

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Bonjour Chamoxx, bienvenue sur le forum.
    Si tu précisais ce que tu veux faire en français (pas en code) on pourrait très certainement t'aider. Par exemple, ta ligne
    If i <> 0 And 10 And 20 And 30 Then
    même sans les points d'interrogation, n'a pas de sens pour VBA
    Veux-tu dire
    si i <> 0 et i <> 20 et i <> 30 alors
    ?
    A+

Discussions similaires

  1. Création macro word pour copier-coller
    Par marmi dans le forum VBA Word
    Réponses: 2
    Dernier message: 18/04/2017, 09h26
  2. [XL-2010] Aide VBA pour copier coller d'un classeur à un autre
    Par jesslab dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 15/11/2013, 16h52
  3. Réponses: 0
    Dernier message: 18/12/2007, 13h59
  4. [Dreamweaver] Probleme pour copier / coller du texte
    Par Aspic dans le forum Dreamweaver
    Réponses: 4
    Dernier message: 13/01/2007, 23h04
  5. Réponses: 2
    Dernier message: 18/11/2005, 16h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo