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 :

[VBA-E] Comment avancer d'une ligne quand la précedente est pleine ?


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 37
    Points : 10
    Points
    10
    Par défaut [VBA-E] Comment avancer d'une ligne quand la précedente est pleine ?
    Bonsoir,

    Me revoila pour la deuxième fois aujourd'hui. J'ai résolu mes petits problèmes précédents, mais me voila confronté à une nouvelle problèmatique.
    Sur mon code précédent, je copiais les données d'une colonne, vers une ligne dans une autre feuille. Un contrôle permet de tester si une celulle précédente est pleine ou vide. Cela permet de passer à la ligne suivante ou non et le tout avec ce code :

    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
    Sheets("XXX").Select
    valeurA2 = Range("A2").Value
    If valeurA2 = "" Then
    Range("A2").Select
    Else
    Range("A1").Select
    Selection.End(xlDown).Select
    ligne_active_base = ActiveCell.Row
    Range("A" & ligne_active_base + 1).Select
    End If
     
    ligne_active_base = ActiveCell.Row
     
    Range("A" & ligne_active_base).Select
    Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, _
    Operation:=xlNone, SkipBlanks:=False, Transpose:=True
    Ca marche terrible mais maintenant que je selectionne des celulles un peu partout dans une feuille, et bien je n'arrive plus à sauter de ligne dans la feuilles de recopie des infos voulues.
    Pour être plus clair, imaginez que vous avez les celulles A2 à W22 remplies par des données dans la feuille "XXX"
    Et bien je souhaiterai passer à la ligne de A3 à W23 si la Cellule A2 est pleine et ainsi de suite, (Si la celulle A3 est pleine, alors passer à la ligne A4 pour la remplir avec mes données de A4 à W24) ...

  2. #2
    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 546
    Points
    15 546
    Par défaut
    à la place de Selection, utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("A" & ligne_active_base).PasteSpecial Paste:=xlPasteAllExceptBorders, _
    Operation:=xlNone, SkipBlanks:=False, Transpose:=True
    et incrépente ligne_active_base chaque fois que la ligne est "remplie"

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 37
    Points : 10
    Points
    10
    Par défaut
    J'ai le même résultat avec ce petit changement. J'ai beau chercher mais je ne trouve pas de solution pour le moment.

    Merci d'avoir essayé, si tu as d'autres idées, elles seront les bienvenues.


  4. #4
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut
    Avec une boucle de ce genre la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        For c = 2 To Rows.Count
            If Cells(c, 1).Value = "" Then
                Cells(c, 1).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
                Exit For
            End If
        Next c
    Qui colle la colonne copiée (bien sur il faut copier la ligne avant en faisant un rows.copy) qui colle la ligne quand c'est vide

    A toi après de le mettre en place pour ce que tu veux faire suivant si c'est une ligne ou une cellule que tu veux copier

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 37
    Points : 10
    Points
    10
    Par défaut
    Ca m'a l'air pas mal comme code, mais où dois-je le placer ?

    "Qui colle la colonne copiée (bien sur il faut copier la ligne avant en faisant un rows.copy) qui colle la ligne quand c'est vide", Je suis un gros nul mais je ne comprend pas.

    "A toi après de le mettre en place pour ce que tu veux faire suivant si c'est une ligne ou une cellule que tu veux copier"
    La ce sont plusieurs cellules identifiées et dispercées que je veux recopier en une seule ligne. Et au fur et à mesure un tableau, (sur une autre feuille ou dans un autres fichier Xls), se constitue avec les donnéees d'un formulaire.

    J'espère que je suis clair.

    Merci

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 37
    Points : 10
    Points
    10
    Par défaut
    Aprés quelques essais, la ligne est bien copiée, le curseur passe bien à la cellule suivante. Mais le problème reste le même, à savoir que les données du formulaire se recopient sur la première ligne, (de A2 à W22).
    Même si je lui entre de données manuelles de A3 à W23, les données se placent toujours en A2.
    Rien à faire, il ne va pas de lui même en A4

    Dur, Dur le code, mais je m'accroche .

  7. #7
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut
    Le code que j'ai commence a 2, c'est peut etre pour ça

    Pour que mon code marche la, il faut que les cellules A1 et B1 ait des donnée ssinon ça marchera pas


    Je vais t'expliquer ce que j'ai écrit avec des commentaire sous chaque phrase :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    For c = 2 To Rows.Count
    'parcours la feuille courante en commencant a partir de la deuxième ligne
            If Cells(c, 1).Value = "" Then
    'regarde si la cellule "Ac" (c étant la variable qui boucle) est vide
                Cells(c, 1).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    'si c'est vide, ça colle la ligne la où c'est vide
                Exit For
    'ça sort de la boucle car on a trouvé la dernière ligne vide ou coller la donnee
            End If
        Next c
    J'espère que c'est plus clair.

    Sinon, si tu utilise ce code, remet moi le code que tu as écrit avec ça, et je verrai ce qu eje peux faire avec en écrivant le code que tu as écrit

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 37
    Points : 10
    Points
    10
    Par défaut
    Voila la macro complete


    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
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    Sub transformation()
     
    'Atteindre le formulaire et mémoriser les données
    Sheets("XXX").Select
    Range("D4").Select
    Range("H4").Select
    Range("D6").Select
    Range("H6").Select
    Range("H7").Select
    Range("D8").Select
    Range("H8").Select
    Range("H9").Select
    Range("H10").Select
    Range("H6").Select
    Range("D12").Select
    Range("D14").Select
    Range("D16").Select
    Range("L16").Select
    Range("D18").Select
    Range("D19").Select
    Range("H18").Select
    Range("H19").Select
    Range("L18").Select
    Range("L19").Select
    Range("D21").Select
    Range("H21").Select
    Range("H22").Select
     
    valeurH6 = Range("H6").Value
    valeurD4 = Range("D4").Value
     
    If valeurH6 = "" Then
    Sheets("XXX").Range("H6") = "----------"
    End If
     
    If valeurD4 = "" Then
    Sheets("XXX").Range("D4") = "----------"
    End If
     
    Selection.Copy
     
    'Test pour déterminer la ligne où coller les infos dans le tableau
     
    Sheets("ALT").Select
    valeurA2 = Range("A2").Value
    If valeurA2 = "" Then
    Range("A2").Select
    Else
    Range("A1").Select
    Selection.End(xlDown).Select
    ligne_active_base = ActiveCell.Row
    Range("A" & ligne_active_base + 1).Select
    End If
     
    'Mémorise le numéro de la ligne où coller les données
     
    ligne_active_base = ActiveCell.Row
     
    'Collage avec transposition
     
      For c = 2 To Rows.Count
            If Cells(c, 1).Value = "" Then
                Cells(c, 1).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
                Exit For
            End If
        Next c
     
    'Range("A" & ligne_active_base).Select
    'Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, _
    'Operation:=xlNone, SkipBlanks:=False, Transpose:=True
     
    'Range("A" & ligne_active_base).PasteSpecial Paste:=xlPasteAllExceptBorders, _
    'Operation:=xlNone, SkipBlanks:=False, Transpose:=True
     
    Sheets("ALT").Range("A2") = Sheets("XXX").Range("D4")
    Sheets("ALT").Range("B2") = Sheets("XXX").Range("H4")
    Sheets("ALT").Range("C2") = Sheets("XXX").Range("D6")
    Sheets("ALT").Range("D2") = Sheets("XXX").Range("H6")
    Sheets("ALT").Range("E2") = Sheets("XXX").Range("H7")
    Sheets("ALT").Range("F2") = Sheets("XXX").Range("D10")
    Sheets("ALT").Range("G2") = Sheets("XXX").Range("H8")
    Sheets("ALT").Range("H2") = Sheets("XXX").Range("H9")
    Sheets("ALT").Range("I2") = Sheets("XXX").Range("H10")
    Sheets("ALT").Range("J2") = Sheets("XXX").Range("D12")
    Sheets("ALT").Range("K2") = Sheets("XXX").Range("D14")
    Sheets("ALT").Range("L2") = Sheets("XXX").Range("D16")
    Sheets("ALT").Range("M2") = Sheets("XXX").Range("H18")
    Sheets("ALT").Range("N2") = Sheets("XXX").Range("L16")
    Sheets("ALT").Range("O2") = Sheets("XXX").Range("L18")
    Sheets("ALT").Range("P2") = Sheets("XXX").Range("D19")
    Sheets("ALT").Range("Q2") = Sheets("XXX").Range("H19")
    Sheets("ALT").Range("R2") = Sheets("XXX").Range("L19")
    Sheets("ALT").Range("S2") = Sheets("XXX").Range("D21")
    Sheets("ALT").Range("T2") = Sheets("XXX").Range("H21")
    Sheets("ALT").Range("U2") = Sheets("XXX").Range("H22")
    Sheets("ALT").Range("V2") = Sheets("XXX").Range("D8")
    Sheets("ALT").Range("W2") = Sheets("XXX").Range("L16")
     
    'Rendre vierge le formulaire
    Sheets("XXX").Select
    Range("D4").Select
    Selection.ClearContents
    Range("H4").Select
    Selection.ClearContents
    Range("D6").Select
    Range("H6").Select
    Range("H7").Select
    Range("D8").Select
    Range("H8").Select
    Range("H9").Select
    Range("H10").Select
    Range("H6").Select
    Range("D12").Select
    Range("D14").Select
    Range("D16").Select
    Range("L16").Select
    Range("D18").Select
    Range("D19").Select
    Range("H18").Select
    Range("H19").Select
    Range("L18").Select
    Range("L19").Select
    Range("D21").Select
    Range("H21").Select
    Range("H22").Select
     
    Selection.ClearContents
    Range("D4").Select
     
    'Retourner dans le tableau
    Sheets("XXX").Select
    Range("D4").Select
    End Sub
    La en fait il faudrai qu'une fois la ligne A2 à W2 de "ALT" remplie par les données du formulaire en "XXX", je puisse passer à la ligne suivante, soit A3 à W3, de A4 à W4 etc ...
    ATTENTION DS MON PREMIER POST J'AI ECRIT de A3 à W23, A4 à W24, je me suis trompé , donc rectifiez en A2 à W2, A3 à W3 etc...

  9. #9
    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 546
    Points
    15 546
    Par défaut
    Essaie de comprendre ce que tu fais avant revenir poser une question. Tes séries de select, celle-ci,
    Range("D4").Select
    Range("H4").Select
    Range("D6").Select
    Range("H6").Select
    Range("H7").Select
    Range("D8").Select
    Range("H8").Select
    Range("H9").Select
    Range("H10").Select
    Range("H6").Select
    Range("D12").Select
    Range("D14").Select
    Range("D16").Select
    Range("L16").Select
    Range("D18").Select
    Range("D19").Select
    Range("H18").Select
    Range("H19").Select
    Range("L18").Select
    Range("L19").Select
    Range("D21").Select
    Range("H21").Select
    Range("H22").Select
    et celle-ci
    Range("D6").Select
    Range("H6").Select
    Range("H7").Select
    Range("D8").Select
    Range("H8").Select
    Range("H9").Select
    Range("H10").Select
    Range("H6").Select
    Range("D12").Select
    Range("D14").Select
    Range("D16").Select
    Range("L16").Select
    Range("D18").Select
    Range("D19").Select
    Range("H18").Select
    Range("H19").Select
    Range("L18").Select
    Range("L19").Select
    Range("D21").Select
    Range("H21").Select
    Range("H22").Select
    ne riment à rien
    Dis-nous pourquoi. Ensuite on verra si on peut faire quelque chose pour toi.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 37
    Points : 10
    Points
    10
    Par défaut
    Bonjour ouskel'n'or ,

    Avant d'envoyer des vannes, commence par lire mon code en entier. Je suis débutant, il faut en tenir compte aussi. Cela dit puisque tu es super balaise, je t'explique mes lignes de code "qui ne riment à rien", (ou bien que tu ne comprend pas):

    - La première que tu cites correspond à la selection individuelle de chaque cellule que je veux recopier.

    - Quant à la seconde partie, prend la peine de le recopier en entier, elle sert à effacer ces mêmes cellules quand la ligne de la seconde feuille est remplie.
    Pour ton info, ce n'est pas la partie que je cherche à optimiser pour l'instant, et si tu regarde 3 lignes plus haut, tu voit bien que je fait un "Selection.ClearContents" à chaque cellule, (pas répété pour mes essais, parce que cela m'évite de me remplir à chaque fois mon formulaire).

    En esperant t'avoir allumé tes lumières, (à l'heure de ton envoi, il faut aller dormir).
    Merci quand même de ne pas m'aider.

  11. #11
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    bonjour Trooper2 ... pour t'aider à résoudre ton probléme ... on doit comprendre ce que tu as voulu faire... et comme te la dit ouskel'n'or ... tes select qui ce succédent ne riment à rien ... en fait cela revient à déplacer le curseur sur toutes ces cellules ... ( sans rien faire, juste pour créer une animation ... ? tu fais un dessin animé..?) .... pour finir par sélectionner seulement La derniére cellule ( UNE Seule..!) ...


    alors comprends bien que ton code et sa description associée manque de clarté ....essai de nous reposer, calmement ton problème...

    ..

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 37
    Points : 10
    Points
    10
    Par défaut
    Salut à tous,

    Pas d'inquietude les gars, je suis calme. Je crois qu'il est plus normal de m'expliquer mes erreurs, plutôt que de me les balancer froidement sans explications. A part cela, j'apprécie beaucoup le mal que vous vous donner tous pour me filer un coup de main.
    Bbil, tu me dis
    .... pour finir par sélectionner seulement La derniére cellule ( UNE Seule..!) ...
    Pourquoi toutes ces cellules sont recopiées comme il faut dans ma page "ALT"
    Je pensai que cette fonction permet de copier le contenu, et de la mettre en mémoire jusque sa recopie. Ca doit être rigolo en dessin animé, sinon

    Bon alors avez vous quand même compris mon problème du début ?

    Merci de corriger mon code au passage , (s'il ne rime à rien) et avec des explications si possible.

  13. #13
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par Trooper2
    ...
    Pourquoi toutes ces cellules sont recopiées comme il faut dans ma page "ALT"
    Je pensai que cette fonction permet de copier le contenu, et de la mettre en mémoire jusque sa recopie. Ca doit être rigolo en dessin animé, sinon
    ...
    tes cellules ne sont pas copié au moment du select ... supprime tous ces select (sauf le dernier à la limite) et tu verra bien que ton code se comporte fonctionne de la même maniére...
    tes donnés sont copiées un peu plus loin ...

    la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sheets("ALT").Range("A2") = Sheets("XXX").Range("D4")
    ...
    et à ce sujet je t'ai déjà posé une question à laquelle tu n'as pas répondu ici

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 37
    Points : 10
    Points
    10
    Par défaut
    Ok dac, là j'ai compris "Ce qui ne rime à rien", et maintenant c'est vrai que cela ne rime à rien.
    ben j'ai beau relire tes messages mais je ne vois nulle part ou tu nous indique la relation entre l'emplacement de tes données sources et l'emplacement destinataire...! alors comment veu-tu qu'on t'aide pour une copie plus optimisée...
    J4ai balancé tout le code en enlevant ce qui ne sert à rien, mais c'est la que ca se passe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("ALT").Range("A2") = Sheets("XXX").Range("D4")
    Le but est de passer à la ligne suivante, (si elle est vierge), pour inscrire de nouvelles infos du formulaire.

  15. #15
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    bon alors tu détermine la derniére ligne puis tu utilise Cells.. pour y écrire ( c'est plus simple que Range dans ce cas la ... )

    du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    'Determine derniére ligne ligbe
    Dim iLgLigne As Integer 
    iLgLigne = Sheets("ALT").Range("A65535").End(xlUp).Row + 1
    'Ecrit dans la ligne libre
    Sheets("ALT").Cells(iLgLigne, "A") = Sheets("XXX").Range("D4")

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 37
    Points : 10
    Points
    10
    Par défaut
    Alors le résulat donne, que la colonne A est bien renseignée, et bien incrémentée. C'est bien, mais le contenu des autres cellules n'est pas recopié, puisque pas demandé.

    C'est logique. J'ai retiré tout cela
    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
    'Sheets("ALT").Range("A2") = Sheets("XXX").Range("D4")
    'Sheets("ALT").Range("B2") = Sheets("XXX").Range("H4")
    'Sheets("ALT").Range("C2") = Sheets("XXX").Range("D6")
    'Sheets("ALT").Range("D2") = Sheets("XXX").Range("H6")
    'Sheets("ALT").Range("E2") = Sheets("XXX").Range("H7")
    'Sheets("ALT").Range("F2") = Sheets("XXX").Range("D10")
    'Sheets("ALT").Range("G2") = Sheets("XXX").Range("H8")
    'Sheets("ALT").Range("H2") = Sheets("XXX").Range("H9")
    'Sheets("ALT").Range("I2") = Sheets("XXX").Range("H10")
    'Sheets("ALT").Range("J2") = Sheets("XXX").Range("D12")
    'Sheets("ALT").Range("K2") = Sheets("XXX").Range("D14")
    'Sheets("ALT").Range("L2") = Sheets("XXX").Range("D16")
    'Sheets("ALT").Range("M2") = Sheets("XXX").Range("H18")
    'Sheets("ALT").Range("N2") = Sheets("XXX").Range("L16")
    'Sheets("ALT").Range("O2") = Sheets("XXX").Range("L18")
    'Sheets("ALT").Range("P2") = Sheets("XXX").Range("D19")
    'Sheets("ALT").Range("Q2") = Sheets("XXX").Range("H19")
    'Sheets("ALT").Range("R2") = Sheets("XXX").Range("L19")
    'Sheets("ALT").Range("S2") = Sheets("XXX").Range("D21")
    'Sheets("ALT").Range("T2") = Sheets("XXX").Range("H21")
    'Sheets("ALT").Range("U2") = Sheets("XXX").Range("H22")
    'Sheets("ALT").Range("V2") = Sheets("XXX").Range("D8")
    'Sheets("ALT").Range("W2") = Sheets("XXX").Range("L16")
    Pour remplacer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    'Determine derniére ligne ligbe
    Dim iLgLigne As Integer
    iLgLigne = Sheets("ALT").Range("A65535").End(xlUp).Row + 1
    'Ecrit dans la ligne libre
    Sheets("ALT").Cells(iLgLigne, "A") = Sheets("XXX").Range("D4")
    'Mémorise le numéro de la ligne où coller les données
    ligne_active_base = ActiveCell.Row
    Ce qui fait qu'il n'y a plus de correspondance dans les cellules. C'est normal donc.
    Es ce que je dois incrementer de la même manière pour chaque cellule ?
    si je veux que H4 de XXX aille se placer dans B2 de ALT ?

    J'ai le cerveau qui chauffe.

  17. #17
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    344
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 344
    Points : 158
    Points
    158
    Par défaut
    salut,

    peut-être que ce que tu veux faire est plus complexe ou je suis peut-etre hors sujet




    si tu veux transposer un tableau

    cette fonction existe deja dans excel

    en fait , tu selectionne ton tableau , tu fais un copie

    et paste special et tu coches x transpose

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 37
    Points : 10
    Points
    10
    Par défaut
    En fait pour résumer, j'ai besoin de copier les données de 23 cellules dispercées de la feuille "XXX", sur une seule ligne de la feuille "ALT" et ensuite passer à la ligne suivante de cette même feuille (ALT) pour continuer le remplissage, à partir de "XXX".

  19. #19
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par Trooper2
    En fait pour résumer, j'ai besoin de copier les données de 23 cellules dispercées de la feuille "XXX", sur une seule ligne de la feuille "ALT" et ensuite passer à la ligne suivante de cette même feuille (ALT) pour continuer le remplissage, à partir de "XXX".
    c'est bien cela on en reviens ici ... si tu ne sais pas nous trouver le liens entre tes cellules sources et cellules destinations ... il va te falloir écrire 23 lignes... mais cela ne devrai pas être trop difficile à partir des derniéres lignes de codes que je t'ai écrite...

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 37
    Points : 10
    Points
    10
    Par défaut
    Alors si je comprend bien, pour faire la même chose avec la cellules H4 de la feuille "XXX" pour la placer en B2 de la feuille "ALT"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    'Determine derniére ligne ligbe
    Dim iLgLigne As Integer
    iLgLigne = Sheets("ALT").Range("B65535").End(xlUp).Row + 1
    'Ecrit dans la ligne libre
    Sheets("ALT").Cells(iLgLigne, "B") = Sheets("XXX").Range("H4")
    'Mémorise le numéro de la ligne où coller les données
    ligne_active_base = ActiveCell.Row
    Le tout 23 fois pour chaque cellule ? Es-ce cela ? Ca me parrait énorme

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Comment tester qu'une ligne d'un Msflexgrid est vide
    Par bahboubacar2 dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 27/03/2010, 13h36
  2. [VBA-E]comment trouver la dernière ligne contenan
    Par couscoussier dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/03/2006, 17h53
  3. Réponses: 5
    Dernier message: 23/03/2006, 13h41
  4. Comment mettre invisible une LIGNE d'un DBGrid ???
    Par EssaiEncore dans le forum Composants VCL
    Réponses: 16
    Dernier message: 07/01/2006, 03h05
  5. Comment mettre à jour une ligne sans doublon via déclencheur
    Par fuelcontact dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/08/2004, 16h56

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