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 :

Insertion de ligne dans excel apres avoir paramètre spécifique.


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 23
    Points : 9
    Points
    9
    Par défaut Insertion de ligne dans excel apres avoir paramètre spécifique.
    Bonjour, j'ai un petit problème pour la conception d'une macro.

    Le but de la manoeuvre est d'inserer une ligne au dessus de chaque case contenant le mot "Total" en colone D.

    J'ai trouvé comment atteindre le mot total et ajouter une ligne mais il ne le fait que pour le 1er total alors que la feuille en contient une centaine.
    Et ces "Total" sont dispersés aléatoirement, c'est à dire qu'il peut se présenter un "Total" ligne 2, ligne 4, ligne 9, ligne 45, etc. Ca ne se suit pas d'une manière définie.

    Avez-vous des pistes?
    Merci beaucoup.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Option Compare Text
    Sub insertionLigne()
        Dim x As Integer
     
        'Recherche le 1er numero de ligne contenant le mot "TOTAL" dans la
        '4ere colonne de la feuille active
        x = Application.WorksheetFunction.Match("*TOTAL*", _
            ActiveSheet.Columns(4), 0)
        'Insertion ligne
        Rows(x).Insert Shift:=xlDown
     
     
    Exit Sub
    End Sub

  2. #2
    Membre habitué
    Inscrit en
    Juillet 2005
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 141
    Points : 148
    Points
    148
    Par défaut
    Bonjour
    si tu connais la taille max de ta colonne tu pourrais faire des test sur tes cellules du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $
    i=1
    while i<findetacolonne
    if tafeuille.cells(i,4).Value="Total" then
    Rows(i).Insert Shift:=xlDown
    i=i+2
    else i=i+1
    end if
    next i
    voili voila
    rémi

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 23
    Points : 9
    Points
    9
    Par défaut
    MErci pour ta réponse super rapide.
    J'ai executé cette macro mais il me ressort un message d'erreur:

    Objet requis a la ligne 9.

    Que se passe t'il?

    MErci


    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 Macro2()
    '
    ' Macro2 Macro
    ' Macro enregistrée le 22/02/2007 par bastien
    '
    i = 1
    While i < 6000
    For i = 1 To 500
    If Sage.Cells(i, 4).Value = "*Total*" Then
    Rows(i).Insert Shift:=xlDown
    i = i + 2
    Else: i = i + 1
    End If
    Next i
    Wend
     
    '
    End Sub

  4. #4
    Membre habitué
    Inscrit en
    Juillet 2005
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 141
    Points : 148
    Points
    148
    Par défaut
    ok dsl jai écris un peu vite
    deja fait pas en mm tps un while et une boucle for
    voila ce qui devrait marcher:
    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
     
    Sub Macro2()
    Dim i As Integer
    ' Macro2 Macro
    ' Macro enregistrée le 22/02/2007 par bastien
    '
    i = 1
    Do While i < 6000
     
    If Worksheets("nomdetafeuille").cells(i, 4).Value = "Total" Then
    Rows(i).Insert Shift:=xlDown
    i = i + 2
    Else: i = i + 1
    End If
    Loop
     
    End Sub

  5. #5
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 23
    Points : 9
    Points
    9
    Par défaut
    Super, nous sommes sur la bonne voie, merci gruget !

    Par contre mon texte à rechercher est sous forme Total xxxxx où xxxxx représente un numero a 5 chiffres. -> "Total 51245" ou "Total 98563"

    J'ai mis: If Worksheets("Sage").cells(i, 4).Value = "*Total*" Then

    Mais il ne me détecte pas le Total!

    Tu sais d'ou ça vient?

    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
    Sub Macro2()
    Dim i As Integer
    ' Macro2 Macro
    ' Macro enregistrée le 22/02/2007 par bastien
    '
    i = 1
    Do While i < 6000
     
    If Worksheets("Sage").cells(i, 4).Value = "*Total*" Then
    Rows(i).Insert Shift:=xlDown
    i = i + 2
    Else: i = i + 1
    End If
    Loop
     
    End Sub

  6. #6
    Membre habitué
    Inscrit en
    Juillet 2005
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 141
    Points : 148
    Points
    148
    Par défaut
    oki
    je sais plus si c'est possible de faire un truc comme ca avec des * et des &
    sinon j'ai bricolé une petite fonction avec la fonction InStr() qui renvoie la position d'un chaine de caractère dans une autre et 0 ou autre chose elle n'y est pas ca donne:

    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
    Sub Macro2()
    Dim i As Integer
    Dim test As Variant
    Dim tacellule As String
     
    ' Macro2 Macro
    ' Macro enregistrée le 22/02/2007 par bastien
    '
    i = 1
     
    Do While i < 600
    tacellule = Worksheets("Sage").cells(i, 1).Value
    test = InStr(1, tacellule, "Total", 1)
    If test > 0 Then
    Rows(i).Insert Shift:=xlDown
    i = i + 2
    Else: i = i + 1
    End If
    Loop
     
    End Sub
    c moi ca marche (sauf erreur de recopie bête)
    @+
    rémi

  7. #7
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 23
    Points : 9
    Points
    9
    Par défaut
    Ok, super ca fonctionne comme je veux, mais maintenant j'aimerai ajouter du texte et des fonctions à chaque ligne crée.

    Comment faire pour indiquer le texte à chaque cellule ?

  8. #8
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 23
    Points : 9
    Points
    9
    Par défaut
    J'ai trouvé je vais mettre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Cells(i, 1).Select
        ActiveCell.FormulaR1C1 = "=R[-1]C"

  9. #9
    Membre habitué
    Inscrit en
    Juillet 2005
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 141
    Points : 148
    Points
    148
    Par défaut
    parfait et il manque pas qq chose..........
    resolu!

  10. #10
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 23
    Points : 9
    Points
    9
    Par défaut
    Je garde le résolu quand j'aurai fini :-)

  11. #11
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 23
    Points : 9
    Points
    9
    Par défaut
    Bon en fait c'est résolu !

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

Discussions similaires

  1. [XL-2010] Copier/coller lignes excel après avoir filtrer le tableau
    Par xmid49 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/03/2014, 15h19
  2. Réponses: 4
    Dernier message: 03/03/2010, 22h20
  3. Réponses: 3
    Dernier message: 28/08/2009, 15h01
  4. Réponses: 2
    Dernier message: 07/12/2005, 16h26
  5. [VB.NET] Recuperer numero ligne dans DATAGRID apres event
    Par stephane93fr dans le forum Windows Forms
    Réponses: 4
    Dernier message: 13/01/2005, 11h58

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