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 :

Problème pour autre boucle


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 41
    Par défaut Problème pour autre boucle
    Bonjour, Je suis pas un champion du monde de macro, suite a ce fait, j'aimerai votre aide si cela vous est possible.

    Voilà ma problématique:
    Mes données d'entrée sont celles-ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    If Sheets("Listing Consultation").Range("C2").Value = "" Then
        Sheets("Listing consultation").Range("C2").Value = b
        Sheets("Listing consultation").Range("D2").Value = c
        Sheets("Listing consultation").Range("A2").Value = d
        Sheets("Listing consultation").Range("B2").Value = e
        ElseIf Sheets("Listing consultation").Range("C3").Value = "" Then
        Sheets("Listing consultation").Range("C3").Value = b
        Sheets("Listing consultation").Range("D3").Value = c
        Sheets("Listing consultation").Range("A3").Value = d
        Sheets("Listing consultation").Range("B3").Value = e
    L'objectif est de pouvoir mettre ce code jusqu'à la cellule C65536 sans avoir a recopier a chaque fois toutes ces ligne de macro en changeant uniquement la cellule.
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ElseIf Sheets("Listing consultation").Range("C65536").Value = "" Then
        Sheets("Listing consultation").Range("C65536").Value = b
        Sheets("Listing consultation").Range("D65536").Value = c
        Sheets("Listing consultation").Range("A65536").Value = d
        Sheets("Listing consultation").Range("B65536").Value = e
    End IF
    Comment puis je faire?

    Merci pour votre aide.

    tmk21fr.

  2. #2
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    Bjr,
    en fait le code par lui même n'est pas très compliqué et sur le forum il y a de nombreux exemples de ce que tu souhaites réaliser. Le code ci-dessous fait exactement ce que tu souhaites.
    Toutefois es-tu vraiment obligés d'examiner toutes les lignes de ta feuille et de remplir toutes ces lignes?
    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
     
    Sub essai()
    Dim i As Long
     
    Sheets("Listing consultation").Activate
     
    For i = 2 To 65536
    If Range("C" & i) = "" Then
       Range("C" & i).Value = "b"
       Range("D" & i).Value = "c"
       Range("A" & i).Value = "d"
       Range("B" & i).Value = "e"
    End If
    Next i
    End Sub
    A+

    EDIT: Pour ce que tu souhaites faires l'utilisation dans la boucle du Elseif n'est pas necéssaire car si il y a une donnée dans la cellule C alors il sort du if et passe a la boucle suivante: EX si C2=3 alors la macro passe directement à C3 et vérifie son contenu ainsi de suite....

  3. #3
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 41
    Par défaut
    Merci rvtoulon.

    En fait, je dois remplir le document au fur et a mesure que nous avons des nouvelles demandes.
    Pour etre sur de ne pas oublier de remplir à la main, je veux qu'il le fasse en automatique.
    Effectivement je n'utiliserai peut etre pas ttes les lignes, mais vu que l'on peux avoir 5 demandes par jours, tu imagine ce que ca fera sur 1 ans.

    Il y a peut être une autre solution, si tu as une idée, n'hésite pas. Je te met ma macro ci dessous pour que tu comprenne le besoin.

    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
    g = MsgBox("ATTENTION! LA MAITRISE DE CONSULTATION DOIT ETRE SEPAREE D'1 MINUTE MINIMUM!! RISQUE D'UN MEME NUMERO DE DOSSIER POUR 2 PROJETS", vbInformation)
     
        b = InputBox("Veuillez renseigner le nom complet du client", "Nom Client", Range("B6").Value)
        c = InputBox("Veuillez renseigner le nom du projet", "Désignation Projet", Range("C10").Value)
     
        Sheets("Maitrise consultation").Select
        Range("C10").Value = c
        Range("B6").Value = b
        D = Range("C4").Value
        e = Range("D4").Value
     
     
      Dim i As Long
     
    Sheets("Listing consultation").Activate
     
    For i = 2 To 65536
    If Range("C" & i) = "" Then
       Range("C" & i).Value = "b"
       Range("D" & i).Value = "c"
       Range("A" & i).Value = "d"
       Range("B" & i).Value = "e"
    End If
    Next i
     
     
    Sheets("Maitrise consultation").Select
        ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
    Pour information, la numérotation automatique se fait par 2 cellule, une avec la date à l'envers (aammjj) et la seconde avec l'heure (hhmm).
    Si l'a également tu as une idée, je suis preneur, car cela me convient qu'a moitier, mais je suis un peu nouveau dans VB.

    Merci d'avance.

  4. #4
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 41
    Par défaut
    Toutefois es-tu vraiment obligés d'examiner toutes les lignes de ta feuille et de remplir toutes ces lignes?

    En fait, je n'ai pas besoin de remplir toutes les lignes, je dois simplement remplir la première ligne qui n'est pas remplis:
    Exemple Ligne D rempli, alors on vérifie que la E n'est pas rempli, si elle n'est pas rempli, on mets les infos voulu, sinon, on passe à la ligne E
    Etc. etc. jusqu'à ce que l'on trouve la ligne pas rempli.

    Le code ci dessous rempli toutes les lignes, et moi j'ai besoin qu'elle n'en remplisse qu'une seule: la remière où il n'y a pas de données.

    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 essai()
    Dim i As Long
     
    Sheets("Listing consultation").Activate
     
    For i = 2 To 65536
    If Range("C" & i) = "" Then
       Range("C" & i).Value = "b"
       Range("D" & i).Value = "c"
       Range("A" & i).Value = "d"
       Range("B" & i).Value = "e"
    End If
    Next i
    End Sub
    Merci d'avance pour votre aide.

    tmk21fr

  5. #5
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    Re,
    le probleme n'est plus le même
    donc si je comprend en fait tu souhaites simplement lorsqu'une demande est faite l'inscrire dans ta feuille Listing consultation les unes à la suite des autres, c'est çà?

    Est-ce qu'il peut y avoir plusieurs fois le même nom dans la colonne C ou pas.
    ex: Le client untel a fait une demande en sept. Le même client fait une demande en oct.

    Les demandes sont-elles faites une par une? (un client à la fois)

    si c le cas alors ce n'est pas la peine de faire une boucle ni un if il faut juste insérer les infos à la suite des autres dans la feuille. Pour faire cela remplace le code que je t'ai donné par celui ci dans ton code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dim derlign As Long
     
    Sheets("Listing consultation").Activate
    'ici on recherche la dernière ligne utilisée de la colonne C et on va à la ligne 
    'suivante
    derlign = Range("C65536").End(xlUp).Row + 1
     
    Range("C" & derlign).Value = b
    Range("D" & derlign).Value = c
    Range("A" & derlign).Value = d
    Range("B" & derlign).Value = e
    dis moi si j'ai vu juste
    A+

  6. #6
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 41
    Par défaut
    Oui, tu as bien compris.
    Effectivement un même client peu nous demander plusieurs projets.

    Ton code à faits des miracle et il réponds exactement a ce que j'attendais.

    Merci beaucoup.

    As tu une idée sur une numérotation automatique?
    Je t'explique:

    A chaque ligne rempli, je veux qu'il me mette une numérotation automatique du type:

    091123 001
    091123 002

    Ce qui signifie 091123 = 23 nov 2009
    001 = la première consultation du 23 nov 2009

    Connais une formule qui pourrais me faire ça?

    si tu as une autre idée, n'hésite surtout pas; 2 tête valent mieux qu'1...

    Merci d'avance.

    tmk21fr

    Merci d'avance?

  7. #7
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    091123 001
    091123 002

    Ce qui signifie 091123 = 23 nov 2009
    001 = la première consultation du 23 nov 2009
    Ou se trouve cette date? est-ce que La variable d= 091123 et e=001 ?

    pour le résulat sont-elles dans deux cellules séparées ex: A1 pour la date et B1 pour 001
    ou dans une seule ex: B1 = 20091123 001 ?

    peux-t-on avoir un peu plus de renseignement ?
    merci

Discussions similaires

  1. [XL-2013] Problème pour utiliser boucle For -> Next
    Par parvi dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 29/04/2015, 11h20
  2. [VBA-E] Problème pour coder une boucle
    Par lord-asriel dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/03/2007, 10h10
  3. Réponses: 2
    Dernier message: 29/08/2006, 13h59
  4. Problème pour appeler une méthode d'une autre classe
    Par tse_tilky_moje_imja dans le forum Général Python
    Réponses: 7
    Dernier message: 03/03/2006, 13h33
  5. [JMeter] Problème avec la boucle infinie pour les tests
    Par zegreg dans le forum Tests et Performance
    Réponses: 1
    Dernier message: 05/10/2005, 11h41

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