Réorganisation ligne excel

Résolu/Fermé
tony020422 Messages postés 445 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 19 janvier 2010 - 7 mai 2008 à 10:12
tony020422 Messages postés 445 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 19 janvier 2010 - 7 mai 2008 à 14:18
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!
A voir également:

3 réponses

zavenger Messages postés 811 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 20 avril 2012 161
7 mai 2008 à 10:47
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
tony020422 Messages postés 445 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 19 janvier 2010 6
7 mai 2008 à 10:51
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
zavenger Messages postés 811 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 20 avril 2012 161
7 mai 2008 à 11:43
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
tony020422 Messages postés 445 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 19 janvier 2010 6 > zavenger Messages postés 811 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 20 avril 2012
7 mai 2008 à 11:53
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
zavenger Messages postés 811 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 20 avril 2012 161 > tony020422 Messages postés 445 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 19 janvier 2010
7 mai 2008 à 13:08
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
tony020422 Messages postés 445 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 19 janvier 2010 6
7 mai 2008 à 13:19
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
zavenger Messages postés 811 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 20 avril 2012 161
7 mai 2008 à 13:24
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
tony020422 Messages postés 445 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 19 janvier 2010 6 > zavenger Messages postés 811 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 20 avril 2012
7 mai 2008 à 13:26
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
zavenger Messages postés 811 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 20 avril 2012 161 > tony020422 Messages postés 445 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 19 janvier 2010
7 mai 2008 à 13:30
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
tony020422 Messages postés 445 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 19 janvier 2010 6 > zavenger Messages postés 811 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 20 avril 2012
7 mai 2008 à 13:33
et pour la première ligne qui disparait également? comment faire pour la conserver?car elle contient les titres...

Merci!!!!
0
zavenger Messages postés 811 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 20 avril 2012 161 > tony020422 Messages postés 445 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 19 janvier 2010
7 mai 2008 à 13:34
initialise ta variable I à 2 au lieu de 1 et tu ne traiteras pas la ligne d'entete
0