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 :

Ajout ligne en fin de tableau avec condition [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Septembre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 3
    Par défaut Ajout ligne en fin de tableau avec condition
    Bonsoir,
    Je suis débutante en VBA (et sans formation initiale), et j'aurais besoin d'un coup de main sur le problème suivant :
    Je souhaiterais créer une macro qui permette de créer une ligne supplémentaire en fin de tableau, avec du report de données, si la ligne initiale rempli une condition.
    J'envoie en pièce jointe un modèle pour plus de compréhension : le fichier comprend une liste d'équipement, avec une fréquence de vérification (tous les 360 jours par exemple) et la date de la prochaine vérification. Lorsque la date réelle de vérification est remplie, il faudrait qu'une nouvelle ligne soit créée, qui reprenne les colonnes A à C, et qui calcule la prochaine date (date théorique + fréquence). Remarque : la ligne en rouge dans le tableau est faite "manuellement", et correspond à ce que je souhaiterais obtenir en "automatique".
    En naviguant sur les différents post du forum, j'ai réussi à créer une ligne dans un nouvel onglet, mais impossible de la créer en fin de tableau...
    Merci d'avance à ceux qui pourraient m'aider sur ce sujet et bonne soirée.
    Essai vérification équipement.xlsx

  2. #2
    Membre émérite
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Par défaut
    Bonjour Julie,
    Voici un morceau de code, assez simple, qui fonctionne.
    J'ai mis quelques explications, si tu as des questions n’hésites pas car je n'ai peut-être pas été assez clair.
    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
    Sub Frequence_Visite()
    Dim Ws As Worksheet 'Declaration de la feuille
    Dim Freq As Range 'Declaration de cellule
    Dim i As Integer 'Declaration de la variable i
    Dim j As Integer
    Dim NbLine As Integer 'Declaration de la variable NbLine
    Set Ws = ThisWorkbook.Sheets("Feuil1") 'Définition de la feuille
    Set Freq = Ws.Range("A2") 'Définition de la cellule de référence
    j = 0
     
    With Ws
        NbLine = .Cells(.Rows.Count, 1).End(xlUp).Row - 1  ' Compte le nombre de ligne de la colonne A
        'Si tu as 6 lignes de donnees + ta ligne de titres NbLine vaudra 7 or comme on va utiliser la fonction Offset on diminue la valeur de 1
        'Car par exemple Freq.Offset(0,0) est ta cellule "A2" definie plus haut, comme je vais utiliser NbLine comme variable pour représenter ma dernière ligne
        'si je garde NbLine tel quel je vais aller modifier Freq.Offset(7,0) par exemple qui est ma ligne 8, or j'ai des données sur les 7 premières lignes seulement
    End With
     
    For i = 0 To NbLine - 2 'On boucle sur toutes les lignes -2 (Si NbLine =7(6 lignes de données + 1 ligne de titre) on verifie 8 lignes (de 0 à 7)
    'or comme on veur verifier les 6 lignes de données (de 0 à 5) on doit retrancher 2
        If Freq.Offset(i, 3) - Date = 0 Then  'Si la date de fréquence de verif est égale a la date du jour(Si tu veux vérifier 5 jours avant tu mets
        'If (Freq.Offset(i, 3) + 5) - Date = 0)
        '(Freq.offset(i,3) est la cellule situee en ligne i et en colonne 3
        'Comme Freq.offset(0,0) est ta cellule A2 Freq.offset(i,3) sera la cellule D2 si i=1. D3 si i=2 etc..
     
            Freq.Offset(NbLine + j, 0) = Freq.Offset(i, 0) 'Freq.offset(NbLine,0) est la cellule A de la ligne vide en dessous de ton tableau
            Freq.Offset(NbLine + j, 1) = Freq.Offset(i, 1)
            Freq.Offset(NbLine + j, 2) = Freq.Offset(i, 2)
            Freq.Offset(NbLine + j, 3) = Freq.Offset(i, 3)
            Freq.Offset(NbLine + j, 3).NumberFormat = "dd/mm/yyyy;@"
            Freq.Offset(NbLine + j, 4) = Date
             j = j + 1 'ici si on trouve une autre ligne qui répond à la condition on rajoute une variable j qui va signifier d'aller une ligne plus bas
        End If
     
    Next i
    End Sub
    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  3. #3
    Candidat au Club
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Septembre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 3
    Par défaut
    Bonsoir,
    Un énorme merci pour ton aide, dire que je me suis arraché les cheveux tout le week-end... ça fonctionne impeccablement !
    Je vais essayer de modifier un peu le code pour modifier le point suivant :
    Une première case "Date de vérification" est remplie. Je lance la macro, et une ligne supplémentaire se créé. Impec. Si je remplis une seconde case "Date de vérification", je lance la macro, et les 2 lignes concernées sont créées. Du coup, je me retrouve avec 2 lignes du même équipement. Je vais essayer de couper / coller la ligne initiale automatiquement sur un autre onglet pour régler le problème.
    Encore merci pour le coup de main.
    Bonne soirée.
    Julie.

  4. #4
    Membre émérite
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Par défaut
    Bonjour Julie,
    Pour éviter de te retrouver avec un doublon comme tu l’évoques tu peux remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Freq.Offset(i, 3) - Date = 0 Then
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Freq.Offset(i, 3) - Date = 0 And Freq.Offset(i, 4) = "" Then

    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  5. #5
    Candidat au Club
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Septembre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 3
    Par défaut
    Super !!
    ça fonctionne nickel. j'ai réussi à mettre en fonctionnement mon fichier.
    Merci beaucoup pour l'aide.

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

Discussions similaires

  1. Tableau avec conditions
    Par patricklopez66 dans le forum Excel
    Réponses: 10
    Dernier message: 08/11/2016, 09h05
  2. Réponses: 5
    Dernier message: 10/08/2011, 19h05
  3. taille d'un tableau avec condition
    Par marooh dans le forum C
    Réponses: 10
    Dernier message: 22/10/2010, 15h22
  4. transfert lignes,colonnes sur deux feuille avec condition
    Par explosion dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 10/06/2010, 15h42
  5. [XL-2007] Copier coller une ligne excel sur autre feuille avec conditions
    Par amstelveen dans le forum Excel
    Réponses: 5
    Dernier message: 11/05/2009, 19h54

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