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 :

Transferts données par boucles - aide [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2004
    Messages : 105
    Par défaut Transferts données par boucles - aide
    Bonjour,

    j'ai un transfert de données d'une feuille données vers une feuille avis.
    ex :
    A2 et B3 de la feuilles données vers A23 de la feuilles avis
    A3 et B4 de la feuilles données vers A26 de la feuilles avis
    A4 et B4 de la feuilles données vers A29 de la feuilles avis
    etc....pour les dix premières données

    Idem pour la date de naissance et le montant...

    Ne connaissant rien en vba, pourriez-vous m'aider.

    Merci d'avance

    Oli

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Bonjour,

    Sans rien y connaître en VBA, ca va être dur, et je te conseille de regarder et de travailler certains tutos sur le sujet avant de te lancer.

    D'une façon générale, voici la marche à suivre:
    • Nommer des variables de type range (plages de cellule)
    • Transférer les valeurs d'une plage à l'autre


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Transfert()
      Dim CelSource As Range
      Dim CelCible As Range
     
      Set CelSource = Worksheets("données").Range("a2")
      Set CelCible = Worksheets("avis").Range("a23")
     
      Do While Not IsEmpty(CelSource)
        CelCible.Value = CelSource.Value & CelSource(2, 2).Value
        Set CelSource = CelSource(2)
        Set CelCible = CelCible(4)
      Loop
    End Sub
    Ce code:
    • initialise les cellules source(données!a2) et cible (avis!a23)
    • boucle tant que la cellule cible n'est pas vide
    • attribue à la cellule cible la valeur résultant de la concaténation des deux cellules constituant la source
    • décale la cellule source d'une ligne vers le bas
    • décale la cellule cible de 3 lignes vers le bas
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2004
    Messages : 105
    Par défaut
    Bonjour,

    Merci Pierre pour ce début d'explication, je vais essayer de trouver, juste petite question , comment je fais pour limiter le transfert à 10 lignes.

    Merci

    Olivier

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    La boucle "Do while... Loop" veut dire "boucler tant que..."

    Une boucle de ce type est utilisée lorsque tu ne connais pas le nombre de boucles à réaliser, mais que tu peux déterminer une condition qui arrêtera la boucle lorsqu'elle sera remplie.

    Si tu connais le nombre de boucles à effectuer, tu peux utiliser une boucle
    "For... Next" dans laquelle tu définis les bornes inférieures et supérieures d'une valeur qui sera incrémentée (décrémentée) d'une ou de plusieurs unités, selon le pas de progression.

    Si le pas est de 1, tu n'as pas besoin de le préciser
    Voici ce que cela pourrait donner (Seules les lignes Do while et Loop ont été modifiées en For... et Next)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Transfert()
      Dim CelSource As Range
      Dim CelCible As Range
      Dim Compteur As Integer
     
      Set CelSource = Worksheets("données").Range("a2")
      Set CelCible = Worksheets("avis").Range("a23")
     
      For Compteur = 1 To 10
        CelCible.Value = CelSource.Value & CelSource(2, 2).Value
        Set CelSource = CelSource(2)
        Set CelCible = CelCible(4)
      Next Compteur
    End Sub
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2004
    Messages : 105
    Par défaut
    re Pierre,

    Petit soucis avec la concaténation, le prénom est en décalage d'une ligne par rapport au nom.!!!

    Olivier

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Dans ton premier message, tu as dis
    A2 et B3 de la feuilles données vers A23 de la feuilles avis
    => décalage...

    Si pas de décalage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CelCible.Value = CelSource.Value & CelSource(1, 2).Value
    (C'est plus "normal", ceci dit)
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Probleme de transfert de données par liste déroulante
    Par franckimmo dans le forum VBA Access
    Réponses: 3
    Dernier message: 25/07/2009, 18h12
  2. transfert données horizontales en verticales par rapport à un index
    Par oscar.cesar dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 22/10/2007, 22h55
  3. transfert des donnèes par FTP
    Par sonia5 dans le forum Mandriva / Mageia
    Réponses: 3
    Dernier message: 15/10/2007, 19h22
  4. [EasyPHP] Transfert de base de données par copie de fichier!
    Par developper2006 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 14/06/2007, 08h56
  5. PB de Transfert de données par l'URL
    Par TUX01 dans le forum Langage
    Réponses: 4
    Dernier message: 02/12/2005, 16h04

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