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 :

Renvoi d'un numéro dans plusieurs lignes en fonction de la quantitée à renvoyer [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 241
    Par défaut Renvoi d'un numéro dans plusieurs lignes en fonction de la quantitée à renvoyer
    Bonjour tout le monde,
    Je ne sais pas si mon titre est assez claire. En fait, je dispose d'un code_cal et de la quantité à renvoyer de ce code. Par exemple code_cal 20, quantitée = 3 et je souhaite renvoyer 20 sur 3 lignes d'une colonne (ici colonneJ).
    J'ai commencé à produire un bout de macro mais elle ne renvoie pas les données sur toutes les 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
    16
    17
    18
    19
    20
    Sub Cal()
     
        Dim i As Integer
        Dim DerLigne As Long
     
        DerLig = Sheets("Cal").UsedRange.Rows.Count
     
        For i = 2 To DerLig Step 1
            If Sheets("Cal").Range("H" & i) = "PAT" Then
     
                If Sheets("Cal").Range("G" & i) > 0 Then
     
                Sheets("Cal").Range("J" & i) = Sheets("Cal").Range("F" & i)
                Exit For
     
                End If
            End If
     
        Next i
    End Sub
    Merci à vous
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Par défaut
    Bonjour,
    si j'ai bien compris, ceci devrait faire ton bonheur.
    voilà!
    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 Cal()
     
    Dim i As Long
    Dim DerLigne As Long
    DerLig = 2
     
     For i = 2 To Sheets("Cal").Range("G" & Rows.Count).End(xlUp).Row - 1
        For j = 1 To Sheets("Cal").Range("G" & i)
            If Sheets("Cal").Range("H" & DerLig) = "PAT" Then
     
                Sheets("Cal").Range("J" & DerLig) = Sheets("Cal").Range("F" & i)
                DerLig = Sheets("Cal").Range("J" & Rows.Count).End(xlUp).Row + 1
            End If
        Next j
     Next i
     
    MsgBox "fin"
    End Sub

  3. #3
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 241
    Par défaut
    Ma que perfecto c'est exactement ça sauf que ça ne prend pas en compte le second tableau concernant le critère "SOL" j'ai modifié un peu :

    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
    Sub Cal()
     
    Dim i As Long
    Dim DerLig As Long
    DerLig = 2
    If Sheets("Cal").Range("H" & DerLig) = "PAT" Then
     For i = 2 To Sheets("Cal").Range("G" & Rows.Count).End(xlUp).Row - 1
        For j = 1 To Sheets("Cal").Range("G" & i)
     
     
                Sheets("Cal").Range("J" & DerLig) = Sheets("Cal").Range("F" & i)
                DerLig = Sheets("Cal").Range("J" & Rows.Count).End(xlUp).Row + 1
        Next j
     Next i
     
    End If
     
     
     If Sheets("Cal").Range("H" & DerLig) = "SOL" Then
     For i = 2 To Sheets("Cal").Range("C" & Rows.Count).End(xlUp).Row - 1
        For j = 1 To Sheets("Cal").Range("C" & i)
     
                Sheets("Cal").Range("J" & DerLig) = Sheets("Cal").Range("B" & i)
                DerLig = Sheets("Cal").Range("J" & Rows.Count).End(xlUp).Row + 1
        Next j
     Next i
     
     End If
     
    MsgBox "fin"
    End Sub
    Mais je ne sais pas si à la longue ça peut marcher. Peux tu me dire ce que tu en penses ?

  4. #4
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 241
    Par défaut
    J'ai un bug que je n'arrive pas à comprendre. J'ai intégré la macro à mon fichier d'origine mais seule les 15 premières lignes fonctionnent. Voici le code et mon fichier d'origine en p.j.

    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
    Sub test()
    Dim i As Long
    Dim k As Long
    Dim DerLig As Long
     
    DerLig = 4
    If Sheets("Feuil1").Range("K" & DerLig) = "EV" Then
     For i = 2 To Sheets("Quantité EV&S").Range("G" & Rows.Count).End(xlUp).Row - 1
        For j = 1 To Sheets("Quantité EV&S").Range("G" & i)
     
     
                Sheets("Feuil1").Range("I" & DerLig) = Sheets("Quantité EV&S").Range("F" & i)
                DerLig = Sheets("Feuil1").Range("I" & Rows.Count).End(xlUp).Row + 1
        Next j
     Next i
     
    End If
     
     
     If Sheets("Feuil1").Range("K" & DerLig) = "S" Then
     For k = 2 To Sheets("Quantité EV&S").Range("C" & Rows.Count).End(xlUp).Row - 1
        For j = 1 To Sheets("Quantité EV&S").Range("C" & k)
     
                Sheets("Feuil1").Range("I" & DerLig) = Sheets("Quantité EV&S").Range("B" & k)
                DerLig = Sheets("Feuil1").Range("I" & Rows.Count).End(xlUp).Row + 1
        Next j
     Next k
     
     End If
    Fichiers attachés Fichiers attachés

  5. #5
    Membre émérite
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Par défaut
    Bonjour,
    Dans ton premier fichier tu avais un total sur la colonne G
    alors pour ne pas tenir compte de ce total j<avais mis dans le code -1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Cal").Range("G" & Rows.Count).End(xlUp).Row - 1

    dans ton 2e fichier tu n'as plus de total dans la colonne G,
    alors il faut enlever le -1
    voir code corrigé




    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
    Sub testsemddo()
    Dim i As Long
    Dim k As Long
    Dim DerLig As Long
     
     
    DerLig = 4
     
    If Sheets("Feuil1").Range("K" & DerLig) = "EV" Then
     
     For i = 2 To Sheets("Quantité EV&S").Range("G" & Rows.Count).End(xlUp).Row
        For j = 1 To Sheets("Quantité EV&S").Range("G" & i)
     
     
                Sheets("Feuil1").Range("I" & DerLig) = Sheets("Quantité EV&S").Range("F" & i)
                DerLig = Sheets("Feuil1").Range("I" & Rows.Count).End(xlUp).Row + 1
        Next j
     Next i
     
    End If
     
     
     If Sheets("Feuil1").Range("K" & DerLig) = "S" Then
     
     For k = 2 To Sheets("Quantité EV&S").Range("C" & Rows.Count).End(xlUp).Row
        For j = 1 To Sheets("Quantité EV&S").Range("C" & k)
     
     
                Sheets("Feuil1").Range("I" & DerLig) = Sheets("Quantité EV&S").Range("B" & k)
                DerLig = Sheets("Feuil1").Range("I" & Rows.Count).End(xlUp).Row + 1
     
        Next j
     Next k
     
     End If
     
     
    End Sub

  6. #6
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 241
    Par défaut
    Ooh je me sens bête d'un coup merci pour ton aide. sujet résolu

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

Discussions similaires

  1. [XL-2007] Recherche d'une valeur dans une ligne en fonction valeur combobox d'un userform
    Par celthi dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/06/2015, 21h25
  2. [XL-2003] Vider le contenu de cellules dans une ligne en fonction d'une identité
    Par graphikris dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/07/2013, 18h08
  3. retourner nom et valeur de chaque colonne dans plusieurs lignes
    Par azur668 dans le forum Développement
    Réponses: 13
    Dernier message: 14/04/2010, 12h46
  4. Réponses: 1
    Dernier message: 26/06/2009, 14h33
  5. Copier une ligne dans plusieurs lignes de Matrice
    Par zicos dans le forum MATLAB
    Réponses: 3
    Dernier message: 22/05/2007, 10h28

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