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 :

Copie de lignes Excel dans des onglets sous conditions


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2013
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Copie de lignes Excel dans des onglets sous conditions
    Bonjour à tous,

    Grace à l'aide d'un membre du forum j'ai réalisé un fichier Excel me permettant de copier les lignes de commandes qui répondent à 3 conditions dans un onglet correspondant à leur nom de contact d'achat (qui est une des colonnes d'une ligne de commande).
    En sachant que le nom qui apparait dans la ligne de commande doit être identique à celui de l'onglet pour qu'il puisse se copier.

    Il y a donc un onglet par nom de contact d'achat connu. Il y a aussi un onglet "Autres" car quand le nom n'est pas précisé c'est cette valeur qui s'affiche.

    Mon problème est le suivant: au fil du temps et des embauches les contacts d'achat seront emmenés à bouger, il y en aura des nouveaux. Et dans ce cas ma macro ne fonctionne pas...

    J'ai beau tourner mon code dans tous les sens, je ne trouve pas comment copier ces lignes de commandes qui ont des contacts d'achat nouveaux dans l'onglet "Autres"...

    Je m'en remet donc à votre expertise Je vous joins le code de ma macro:

    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
    Option Explicit
    Sub Répartir_si_conditions_remplies()
    Dim o As Worksheet
    Dim i As Long
    Dim copier_vers As String
    Application.ScreenUpdating = False
    For Each o In Worksheets
        If o.Name <> "Accueil" And o.Name <> "Listing Cda" Then
            With o
                .Activate
                .Range(Range("a3"), Range("a3").End(xlToRight).End(xlDown)).Clear
            End With
        End If
    Next
    Sheets("Listing Cda").Activate
    For i = 3 To Range("a65536").End(xlUp).Row
        If Range("a" & i).Offset(, 34).Value = "Oui" Then
        If Range("a" & i).Offset(, 36).Value = "Non reçu" Or Range("a" & i).Offset(, 36).Value = "Partiel" Then
               If Date - Range("a" & i).Offset(, 22).Value > 4 Then
            Range("a" & i).Offset(, 0).Resize(, 38).Select
            copier_vers = Cells(i, 11).Value
            Selection.Copy Destination:=Sheets(copier_vers).Range("a65536").End(xlUp).Offset(1, 0)      
    Sheets("Listing Cda").Activate
               End If
         End If
    End If
    Next
    Range("a1").Select
    Application.ScreenUpdating = True
    End Sub
    C'est la ligne en rouge qui apparaît en erreur lorsque je lance la macro sur un listing de commandes comprenant des contacts d'achat inconnus.

    Je vous joins également mon fichier:
    - les intitulés de colonnes en rouge sont ceux dont dépendent les 3 conditions
    - les lignes de commandes en jaune sont celles qui répondent à ces conditions et donc qui se copient dans les onglets au lancement de la macro
    - les noms de contact achat en vert sont ceux qui sont inconnus.


    Je n'attend pas forcément une correction toute faite, mais même des pistes pourront m'aider, sachant que je suis novice et en plein apprentissage de ce langage

    Et surtout, n'hésitez pas à me faire reformuler pour plus de clarté !

    Merci d'avance à tous, c'est grace à vos participations sur différents forums que j'ai déjà pu en arriver là !
    Fichiers attachés Fichiers attachés

  2. #2
    Membre régulier
    Inscrit en
    Mai 2011
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 85
    Points : 122
    Points
    122
    Par défaut
    Normal, ta variable copiervers contient un nom de feuille qui n'existe pas et non pas autre.

    Le mieux serait de parcourir toutes les feuilles existantes, de chercher la feuille et si elle n'existe pas de la creer.

    En gros il faut remplacer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Range("a" & i).Offset(, 0).Resize(, 38).Select
    copier_vers = Cells(i, 11).Value
    Selection.Copy Destination:=Sheets(copier_vers).Range("a65536").End(xlUp).Offset(1, 0)
    Par:

    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
    Range("a" & i).Offset(, 0).Resize(, 38).Copy
    copier_vers = Cells(i, 11).Value
    For each o in worksheets
        if o.name=copier_vers then
                trouve=true
                activesheet.paste
                exit for
        end if
    next o
    If trouve=false
        Sheets.Add.Move After:=Sheets(Sheets.Count)
        Sheets(Sheets.Count).name = copier_vers
        Sheets(Sheets.Count).select
        activesheet.paste
    end if
    Je pense que t'aura juste a modifier activesheet.paste. Peut être par Sheets(copier_vers).Range("a65536").End(xlUp).Offset(1, 0).Paste mais je suis pas sûr j'ai le cerveau un peu rouillé.

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2013
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Merci beaucoup pour ta réponse rapide !

    J'ai remplacé ces trois lignes mais cette erreur survient:

    Erreur de compilation: variable non définie
    Sur la ligne:

    Ma question est un peu naïve mais je dois appeler la variable "trouve" par un:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim trouve As (quelque chose)
    en début de code macro ?


    Je suis désolée mais je suis vraiment novice dans ce domaine... Encore merci !

  4. #4
    Membre régulier
    Inscrit en
    Mai 2011
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 85
    Points : 122
    Points
    122
    Par défaut
    Oui il faut que tu mette:

    en début de macro.

  5. #5
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2013
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Merci beaucoup, je pensais avoir compris avec ton code mais j'ai maintenant une autre erreur, il attend
    ou après la variable Voilà le bout de code concerné:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    If trouve = true
        Sheets.Add.Move After:=Sheets(Sheets.Count)
        Sheets(Sheets.Count).Name = copier_vers
        Sheets(Sheets.Count).Select
        Sheets(copier_vers).Range("a65536").End(xlUp).Offset(1, 0).Paste
    End If

  6. #6
    Membre régulier
    Inscrit en
    Mai 2011
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 85
    Points : 122
    Points
    122
    Par défaut
    C'est la structure de if, il lui faut un then (ou un Goto) après la condition. Petit oubli de ma part .

Discussions similaires

  1. Changer la couleur du texte dans des labels sous condition
    Par Liloo14 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 13/12/2023, 15h59
  2. [XL-2010] Supprimer des onglets sous condition
    Par APLOMB dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/01/2013, 00h16
  3. [XL-2010] Supprimer des onglets sous condition
    Par APLOMB dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 08/01/2013, 23h56
  4. [XL-2000] Saisie dans des cellules sous conditions
    Par cedana dans le forum Excel
    Réponses: 3
    Dernier message: 14/01/2010, 14h00
  5. Moteur de recherche avec Excel dans des onglets ?
    Par jufabref dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/07/2008, 13h51

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