Réorganisation ligne excel

Résolu
tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   -  
tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je suis nouveau sur le forum et sur escel alors veuillez m'excuser si la question a déjà été posée!

je suis actuellement en stage et je dois traiter un fichier excel assez indigeste.

Aprés avoir réaliser une macro avec suppression de lignes, colonnes.. tout fonctionne mais je souhaite ensuite rajouter a cette feuille excel une nouvelle colonne provenant d'un autre classeu, toujours à l'aide de macro.

Aprés essai le copier coller ne fonctionne pas j'ai donc utiliser recherchev.. et la ca fonctionne.

Le problème est lorsque je lance les 2 macros a la suite la première fonctionne tandis que la seconde ne réalise pas l'ajout de la colonne, et je pense que cela est du au fait que la numérotation des lignes différe entre la feuille ou les lignes ont été modifiées et celle ou la colonne est à récupérer

J'aimerais donc savoir comment modifier la numérotation des lignes a savoir renuméroter les lignes de la feuille principale classiquement ( 1 2 3 4 5 6 ... ) plutot que comme elle ne l'est actuellement (1 2 107 108 402 405 ...) pour que les 2 numérotations concordent et que la macro fonctionnne, ainsi je pourrais réaliser le recherchev...

Merci pour votre aide car mon boulot devient urgent!

bonne journée!
Configuration: Windows XP
Internet Explorer 6.0

3 réponses

  1. zavenger Messages postés 817 Statut Membre 161
     
    Bonjour
    Dans excel, les lignes sont TOUJOURS numérotées de 1 à ..... Dans ton cas il y a certaines lignes de cachées (soit par choix , soit du à un tri)
    Il faut que tu regardes de ce coté là
    0
  2. tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   6
     
    Bonjour
    merci pour votre réponse!
    En fait vous avez rasion les lignes non visibles ont été filtrées préalablement ..
    Mais comment faire alors ?! car ce filtre est obligatoire et la "renumérotation" aussi...je ne sais comment faire pour que la macro fonctionne entre les 2 fichiers excel décalé par rapport aux indices de lignes..

    En tout cas merci de vous intéresser à mon problème !

    Peut etre est il possible de donner une autre piste de reflexion: le filtre permet de ne garder que les lignes dont la valeur vaut 241 dans une certaine colonne.. peut on mettre une condition avec suppression de lignes, par exsemple:
    si ca ne vaut pas 241 alors supprime carrément la ligne; je ne sais pas si cela est faisable..

    Merci !
    0
    1. zavenger Messages postés 817 Statut Membre 161
       
      Effectivement sit les lignes qui ne contiennent pas la bonne valeur ne sont pas necessaires, il vaut mieux les effacer ensuite, le copier coller va fonctionner comme prevu.
      Ou alors, au lieu de faire un copier/coller direct, il faudrait faire un copier/coller ligne par ligne avec une boucle à 2 indexs, un qui indiquerait la ligne de destination (que les lignes qui comprenne ta valeur 241) et l'autre qui balaye la page source
      0
      1. tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   6 > zavenger Messages postés 817 Statut Membre
         
        merci pour ces infos mais je ne pense pas tout comprendre!

        A priori il est possible de faire une boucle avec "if" pour enlever les lignes ne comportant autre chose que 241 en colonne 2

        j'ai essayé ca sur mon excel de 2630 lignes..:

        Sub delete_ligne()
        Dim i As Integer
        Application.ScreenUpdating = False
        For i = 1 To 2630
        If (Cells(i, 2) <> 241) Then
        Cells(i, 1).EntireRow.Delete
        i = i - 1
        End If
        Next
        Application.ScreenUpdating = True
        End Sub

        Ca tourne a priori ( pas de mess d'erreur) mais ca tourne en rond a priori puisque 20 min aprés ca réfléchit tjs..je ne sais pas pourquoi..

        si possible je préfererais d'abord dans la premère macro faire ca puis dans une seconde faire mon recherchev ect... pour ne pas faire les copier coller et surtout pouvoir directement supprimer les lignes inutiles..

        Merci bcp en tout cas de m'aider ! !
        0
      2. zavenger Messages postés 817 Statut Membre 161 > tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention  
         
        cela boucle à cause de cela

        For i = 1 To 2630

        puisque tu decrementes ton i, il n'arrive jamais à la fin

        Tu devrais plutot faire une boucle do while avec un test sur cells(i,1).value <> "" pour t'arreter
        0
  3. tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   6
     
    ok j 'ai compris mon erreur, merci ! !
    Par contre ca ne suffirait pas de changer vers la fin le i=i-1 en i=i+1?
    Si le réponse est non, pourrais tu m'envoyer stp un script qui marche nikel avec la base de mon programme car tu sembles gérer ca assez facilement alors que moi je galère dessus depuis hier!!
    Par contre j'aimerais garder quoi qu il en soit la première ligne qui ne possède que des caractères (nom pièce, date panne...) dans chque colonne!

    Merci en tt cas du fond du coeur pour ton aide ! ! !
    0
    1. zavenger Messages postés 817 Statut Membre 161
       
      Sub delete_ligne()
      Dim i As Integer
      i = 1
      Application.ScreenUpdating = False
      Do While Cells(i, 2) <> ""
      If (Cells(i, 2) <> 241) Then
      Cells(i, 1).EntireRow.Delete
      Else
      i = i + 1
      End If
      Loop
      Application.ScreenUpdating = True
      End Sub

      A priori cela marche
      0
    2. tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   6 > zavenger Messages postés 817 Statut Membre
       
      ouaou c 'est trop bien ca marche!!!!!!!!!!!!!!!!!!!!!!!!! mille mille merci!
      Par contre si la taille du tableau varie( car celui ci est en fait nouveau tous les 15 j et les macros permettront de les trier directement) le programmen reste il el même ?!
      enfin je souihaiterais garder la première ligne car celle ci contient les titres des colonnes!

      Encore merci ! !

      bonne journée ! !
      0
    3. zavenger Messages postés 817 Statut Membre 161 > tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention  
       
      en fait la seule chose qui est codé en dur dans la macro, c'est le numéro de colonne (2) donc tant que la valeur à tester reste dans cette colonne, il n'y aura pas de probleme
      0
    4. tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   6 > zavenger Messages postés 817 Statut Membre
       
      et pour la première ligne qui disparait également? comment faire pour la conserver?car elle contient les titres...

      Merci!!!!
      0
    5. zavenger Messages postés 817 Statut Membre 161 > tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention  
       
      initialise ta variable I à 2 au lieu de 1 et tu ne traiteras pas la ligne d'entete
      0