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]besoin d'aide pour faire une boucle


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Avril 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [VBA-E]besoin d'aide pour faire une boucle
    Bonjour ,
    Je viens de démarrer un nouveau boulot et mon chef « tane » et me teste pour que je fasses un programme sous VBA attaché a Excel qui prend dans l’ordre les données (lettres) sur une colonne avec en face les valeurs numériques qui correspondent dans une feuille Excel pour les mettre sur une autre feuille du même dossier, puis lorsque qu’il n’y a plus de données sur la feuille source répéter l’opération sur une autre feuille pour rapatrier les données sur la même feuille : j’ai pensé à un Do while , faire : tant que les cellules qui appartiennent à la colonne C (par ex) sont « pleines « , prendre les valeur et les mettre dans l’ordre sur une autre feuille , puis lorsque la première cellule vide est rencontrée dans cette colonne C passer à une autre feuille et répéter l’opération (sur 4 feuilles max)
    Je vous remercie de votre aide et de vos suggestions

  2. #2
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Cher(e) mikazounette,

    Si c'est vraiment là ce que te demande ton "chef", "au boulot" (défaire puis refaire ce qui existait déjà) :
    Changes donc immédiatement de boîte

    Si, par contre, le "chef" est ton formateur et que le "boulot" est ton stage de formation, il faut savoir nous le dire, en même temps qu'il faut savoir nous montrer le bout de code que tu as commencé à écrire...

  3. #3
    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
    oui do While ... cela peu répondre à ton probléme... ou while wend.. ?

    un truc du genre ...

    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
     
    Sub Transfert()
     Dim ixS As Integer 'Index feuille source
     Dim fS As Worksheet ' Feuille Source
     Dim ixD As Integer 'Index feuille destination
     Dim fD As Worksheet ' Feuille destination
     
     Set fS = ThisWorkbook.Sheets(1)
     Set fD = ThisWorkbook.Sheets("Feuil2")
     
     ixD = 1
     ixS = 1
     While fS.Cells(ixS, 3) <> "" ' Colonne 3 = "C"
      fD.Cells(ixD, 3) = fS.Cells(ixS, 3)
      ixD = ixD + 1
      ixS = ixS + 1
     Wend
    End Sub

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Avril 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut merci bcp, mais toujours un petit souci dessus
    Je vous remercie beaucoup,
    J’ai résolu mon 1er problème avec votre aide et en me creusant les méninges.
    Je vous joins mon code qui permet : 1 d’effacer les données dans la feuille de destination
    Et 2 de ramener des pavés de cellules situés dans les feuilles sources qui démarrent dans chacune a partir du même numéro de ligne dans ces feuilles sources.

    Ce que je n’arrive pas a faire, c’est une fois cette procédure terminée , répéter cette procédure à partir d’un autre pavé de cellules situé toujours sur ces mêmes feuilles sources et qui démarrent au même numéro de lignes un peu plus bas et qui les place sur la feuille de destination à un numéro de ligne précis.


    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
    Public l_write As Integer
    Public Const FEUIL_DESTINATION As String = "Feuil1"
    Public Const MADRID As String = "MADRID"
    Public Const SIEGE As String = "siege(P-M-D)"
     
    Sub effacer()
    ' cree par : Mikazounette
    ' date de creation : 9 avril 2006
    ' description : cette Sub efface le contenu de FEUIL_DESTINATION de "A6:AZ250"
     
    'Workbooks(CLASSEUR_DESTINATION).Sheets(FEUIL_DESTINATION).Range("A6:AZ250").ClearContents
    Sheets(FEUIL_DESTINATION).Select
    Range("A1:AZ250").Select
    Selection.ClearContents
     
    End Sub
     
    Sub remplirUneVilleCommeMaMeilleureCopine(feuil_origine As String, FEUIL_DESTINATION As String, ligne_depart_lecture As Integer)
    ' cree par : mikazounette
    ' date de creation : 8 avril 2006
    ' description : copie les donnees depuis feuil_origine vers feuil_destination a partir de ligne_depart, jusqu'a rencontrer une cellule vide
     
    'l_read est la ligne a laquelle on lit dans la feuille d'origine
    'l_write est la ligne a laquelle on ecrit dans la feuille de destination
     
    Dim l_read As Integer
    Dim pas_vide As Boolean
     
    'initialisation du compteur
    l_read = ligne_depart_lecture
    pas_vide = True
     
    ' je marque cells(l_read, 3) car 3 correspond a la colonne "C"
    If Sheets(feuil_origine).Cells(l_read, 3) = "" Then
        pas_vide = False
    End If
     
    Do While pas_vide
        Sheets(FEUIL_DESTINATION).Cells(l_write, 1) = Sheets(feuil_origine).Cells(l_read, 3)
        Sheets(FEUIL_DESTINATION).Cells(l_write, 2) = Sheets(feuil_origine).Cells(l_read, 4)
     
        If Sheets(feuil_origine).Cells(l_read, 3) = "" Then
            pas_vide = False
        End If
         l_read = l_read + 1
        l_write = l_write + 1
    Loop
     l_write = l_write - 1
     End Sub
     
    Sub pitchMatrix()
     
        Dim ligne_depart_lecture As Integer
        Dim ligne_depart_ecriture As Integer
     
        ligne_depart_lecture = 41
        l_write = 1
     
        Call effacer
        Call remplirUneVilleCommeMaMeilleureCopine(MADRID, FEUIL_DESTINATION, ligne_depart_lecture)
        Call remplirUneVilleCommeMaMeilleureCopine(SIEGE, FEUIL_DESTINATION, ligne_depart_lecture)
    End Sub
    Balises "Code" ajoutées par AlainTech
    Merci d'y penser vous-même à l'avenir.

Discussions similaires

  1. [XL-2003] Besoin d'aide pour faire une boucle loop sur une macro
    Par spacesheep dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 14/04/2010, 11h42
  2. Réponses: 22
    Dernier message: 20/05/2008, 10h25
  3. Besoin d'aide pour faire une string formatée
    Par fab032 dans le forum Langage
    Réponses: 2
    Dernier message: 24/04/2008, 14h37
  4. [MySQL] Besoin d'aide pour faire une boucle
    Par plex dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 15/04/2008, 13h47
  5. Besoin d'aide pour faire une procédure stockée
    Par PoichOU dans le forum SQL
    Réponses: 17
    Dernier message: 30/04/2007, 17h55

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