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 :

VBA EXCEL : boucle, recherche ligne


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 41
    Par défaut [VBA-E] boucle, recherche ligne
    Bonjour à tous,

    J'ai trouvé plusieur aide et site mais je n'arrive pas à trouver la solution. Le temps passe et je dois présenter mon travail jeudi prochaine et je suis un peu dans l'impasse.

    Je cherche un peu d'aide pour corriger ou me donner des idees pour réaliser mon projet. J'ai testé quelques lignes de codes cela marchait plutot bien. Je les ai implantés dans mon document type et la ce ne donne pas le resultat escompté.


    J'utilise des boutons mais je pensais aussi à un userform + boutons pour réaliser mon étape 1 et 2. ( à creuser )

    1ere etape :
    En quelque mot, je voudrais copier la ligne a5 s5 toujours en dessous
    ( reconnaissance de la derniere ligne ) la difficulte c'st que j'ai deux tableaux sur la meme feuille . Le deuxieme tableau me sert pour des listes déroulantes.
    J'ai trouvé plusieur aide et site mais je n'arrive pas à trouver la solution.

    2eme etape :
    Je voudrais pouvoir remodifier n'importe quel ligne sauf ma ligne exemple L5.

    3eme etape :
    J'ai une macro de protection de feuille et deprotection de feuille ( non visible sur cette exemple ).
    Je désirerais verrouiller ou déverouiller des plages.

    C'est pour éviter des modifications non voulu.

    voici mon exemple
    http://cjoint.com/?dAqgLwaGeN


    Merci pour votre futur aide.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 63
    Par défaut
    pour ton étape 1 :

    voici un axe de recherche, un bout de code a adapter :

    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 TestA()
     
     
    For i = 1 To 25
     
    If IsEmpty(Range("A1").Offset(i, 0)) = True Then
      'si la 1 cellule de mon tableau est vide (en supposant que si la 1er cellule est vide -> la ligne est vide)
      'alors je copie la ligne où je suis avec mon ActiveCell
     
      ActiveCell.Offset(0, -1).Range("A1").Select
        Range(Selection, Selection.End(xlToLeft)).Select
     
      Exit For
     
    End If
     
    Next i
        Selection.Copy Destination:=Range("A1").Offset(i, 0)
    'je la colle à la fin de mon tableau
    End Sub

    dans mon cas je suis sur un tableau à 3 colonnes + une 4 eme colonne en jaunes, qui me sert juste pour délacer mon curseur.

    En fonction d'ou se trouve mon curdeur, je copie la ligne ou je me trouve (depuis la colonne n-1 ou je me trouve), tout a la fin de mon tableau, a la derniere ligne vide...


    voilà essai de l'adapter un peu a ton cas avec les bonnes colonnes.
    oups j'allais oublier que j'ai considérer aussi que ma recherche se faisait de A1 jusqu'à la 25 eme ligne ...

    si quelqu'1 a autre chose de plus intelligent ... c toujours intéressant
    bonne chance A+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 41
    Par défaut boucle, recherche ligne
    slt,

    J'ai regardé comment fonctionner tes ligne de code, j'ai compris avec un essai en reprenant un tableau à 4 colonne.

    Je l'ai essaye avec mon tableau .
    Soit cela me copie ma ligne au dessus de mon champs titre.
    Si je vire les deux lignes vides. Cela me detruit ma ligne que je voudrais copier.

    Est-ce que mes liste déroulantes pourrait etre la cause de mes problèmes?


  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 63
    Par défaut
    Oups ... je crois comprendre ta question mais jsu un peu KO V me coucher...

    avant ça, regarde bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If IsEmpty(Range("A1").Offset(i, 0)) = True Then
    Je pars ici de A1, je considère donc que mon tableau commence à la premiere ligne A1 (ligne comprenant d'ailleur les titres du tableau) puisque :

    donc ma prmeire ligne scanée est :

    Range("A1").Offset(1, 0))

    il faut adapter ton code en conséquence, tu dois avoir un tableau qui ne commence pas dès la ligne A1 ou carrément en plein milieu de ta feuil excel et là forcément le code ne s'adapte pas automatiquement

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 41
    Par défaut boucle ,recherche ligne
    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
    Private Sub CommandButton2_Click()
     
    '--------------------------------------------
    'Comptage du nombre de lignes "REP" existantes  dans la feuille "Données"
    ' Le nombre de  lignes "REP" est limité à 242
    '---------------------------------------------
        i = 5
     
    Do While Worksheets("Feuil2").Cells(i, 1) <> ""
        i = i + 1
        If i = 250 Then
                MsgBox ("LE NOMBRE DE REPERE DE MAILLONS EST LIMITE A 242")
                Exit Do ' Quitte la boucle interne.
        End If
    Loop
        Nb_ligne_REP = i - 5
     
    '-----------------------------------------
    'Création d'une nouvelle ligne  "REP" dans la feuille "Données"
    'qui comprend "REP, ..."
    '---------------------------------------
    Creation_ligne_REP Nb_ligne_REP + 4
    End Sub
    Module :
    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
     
    Sub Creation_ligne_REP(Nb_ligne_REP)
    '----------------------------------------------
    'Création d'une nouvelle ligne  "REP" dans la feuille "Données"
    'qui comprend "REP, ..."
    '-------------------------------------
        Sheets("Feuil2").Select
        Range(Cells(5, 1), Cells(5, 20)).Select
        Selection.Copy
        Cells(Nb_ligne_REP + 1, 1).Select
        ActiveSheet.Paste
     
    '-------------------------------
    ' Ecriture du numéro de "REP" dans la 1ère colonne
    '--------------------------------
        Sheets("Feuil2").Cells(Nb_ligne_REP + 1, 1) = Nb_ligne_REP - 3
     
    End Sub
    --------------------------------------------------------------------------
    J'ai pas mal avance . J'ai résolu mon etape 1 par les lignes de codes ci-dessus. Cela peut peut-etre servir à quelqu'un.

    Mais je voudrais y integrer une boucle pour éviter les répétitions ( j'ai 20 feuilles ). je bloque sur le code. J'ai tester par mal de chose.

    J'ai une erreur du type :
    Erreur d'execution 9
    l'indice n'appartient pas à la sélection


  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour Sebi78,

    Essayez ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    nbf = 20
     
    For n = 1 To nbf
     
    Sheets(n).Select
     
      'Votre traitement
     
    Next n
    Amicalement.
    Dernière modification par AlainTech ; 01/04/2007 à 03h58. Motif: Suppression de la mise en forme dans le code

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

Discussions similaires

  1. [VBA][EXCEL] pb suppression ligne
    Par megapacman dans le forum Access
    Réponses: 2
    Dernier message: 06/04/2006, 13h34
  2. [VBA]Excel - Suppression de ligne
    Par Jseb de Lyon dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 29/01/2006, 15h22
  3. [VBA][Excel]supprimer des lignes vierges
    Par Angel79 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 17/01/2006, 13h17
  4. [Vba + Excel] requete rechercher en vba
    Par Emcy dans le forum Access
    Réponses: 2
    Dernier message: 14/11/2005, 09h38
  5. [VBA][Excel]Insérer une ligne
    Par loverdose dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/02/2005, 16h27

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