Excel 2003 - Garder des informations précises

Résolu/Fermé
eagnix - 17 mai 2009 à 10:22
 Utilisateur anonyme - 18 mai 2009 à 23:02
Bonjour,

Sous Microsoft Office Excel 2003, j'ai un classeur avec plusieurs feuilles avec des informations plus ou moins les mêmes. J'aimerais savoir si c'était possible de garder certaines informations les plus utiles sachant qu'elles ne sont pas toujours tout à fait sur les mêmes lignes (je détaillerai mes questions en détails plus loin). Pour plus de compréhension je vais donner un exemple simplifié ci-dessous.

Sur la feuille 1:
Ligne 1: Nom de l'article
Ligne 2: Vide
Ligne 3: Informations inutiles
Ligne 4: Informations inutiles
Ligne 5: Informations inutiles
Ligne 6: Vide
Ligne 7: 200 articles achetés ce mois-ci sur 300 prévus
Ligne 8: Vide
Ligne 9: 80 articles vendus ce mois-ci sur 200 achetés
Ligne 10: vide
Ligne 11: Articles total en stocks: 500
Ligne 12: Vide
Ligne 13: Prix
Ligne 14: 100 euros pour 1 article
Ligne 15: 950 euros pour 10 articles
Ligne 16: 9000 euros pour 100 articles

Sur la feuille 2:
Ligne 1: Nom de l'article
Ligne 2: Vide
Ligne 3: Informations inutiles
Ligne 4: Informations inutiles
Ligne 5: Informations inutiles
Ligne 6: Informations inutiles
Ligne 7: Informations inutiles
Ligne 8: Informations inutiles
Ligne 9: Informations inutiles
Ligne 10: Vide
Ligne 11: 400 articles achetés ce mois-ci sur 500 prévus
Ligne 12: Vide
Ligne 13: 300 articles vendus ce mois-ci sur 400 achetés
Ligne 14: vide
Ligne 15: Articles total en stocks: 600
Ligne 16: Vide
Ligne 17: Prix
Ligne 18: 10 euros pour 1 article
Ligne 19: 95 euros pour 10 articles
Ligne 20: 900 euros pour 100 articles

Question 1:
J'aimerais garder en premier lieu: de la ligne "Articles en stocks: …" à "… euros pour 100 articles".

Question 2:
Existe-t-il une fonction qui me permettrait de garder uniquement le premier nombre de chaque ligne?

Question 3:
Après les manipulations, je dois remettre ces informations dans un tableau en données horizontales. Je sais utiliser la fonction transposition mais y a-t-il moyen d'effectuer la même transposition sur plusieurs feuilles d'un coup? Je vais donner un exemple pour plus de compréhension avec les informations obtenues après les manipulations de la question 1 (il y en aurait plus avec la question 2).

J'aurai pour la feuille 1:
500
100
950
9000

J'aurai pour la feuille 2:
600
10
95
900

Je suis désolé pour ce long message et je vous remercie pour votre aide.

PS: dans les feuilles réelles, il y a plus de lignes vides et d'informations inutiles.
A voir également:

7 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
18 mai 2009 à 09:38
bonjour

Pour te répondre, je vais prendre un exemple simple.

Tu vas au jardin, tu traces au cordeau des lignes de semis régulièrement espacées et tu sèmes. Lorsque ton semis et les herbes "inutiles" poussent tu peux facilement sarcler pour éliminer les "inutiles" et conserver ton semis.

Essaies maintenant de semer à la volée comme la célèbre Semeuse et dis moi comment tu vas faire pour éliminer les "inutiles" ? ... sans doute manuellement et longuement ...

En bureautique ou en informatique les règles de base sont aussi naturelles que celles du jardinier.
2
Utilisateur anonyme
18 mai 2009 à 23:02
Bonjour juste une remarque. les réponses que les personnes ci dessus ont données sont bonnes.
Mais il ne faut pas oublier Q'excel est un tableur avec des lignes et des colonnes et qu'il est facile de travailler avec sans se lancer dans des macros compliqués pour un débutant.
Par contre il faut penser comment créer son fichier tout au début.
L'informatique a ce niveau s'improvise pas Hélas.
Bon courage.
1
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
17 mai 2009 à 22:07
bonjour

Ta question est bien exposée mais il est difficile de donner une réponse précise.

La manipulation de données est toujours plus facile lorsqu'elles sont structurées. Apparemment ce n'est pas le cas de ton classeur et tu sais très bien qu'il est plus facile de trouver ce que l'on cherche lorsque c'est classé, comme les médicaments dans une pharmacie, plutôt que mise en tas informe.

Il n'existe pas de fonction qui va te trier tes informations sauf si tu écris une macro VBA, en sachant exactement ce que tu dois faire. En effet, tu dis qu'il y a des lignes avec des "informations inutiles" mais comment coder ce concept pour les ignorer ?
0
Raymond PENTIER Messages postés 58395 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 25 avril 2024 17 095
18 mai 2009 à 01:12
Tu indiques toi-même les incohérences et anomalies du classeur.
Es-tu contraint de "faire avec" parce que la structure des feuilles t'est imposée, ou as-tu la possibilité de modifier ou d'imposer une structure plus rationnelle ?
Parce que je souscris à 100% aux propos de gbinforme ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour gbinforme et Raymond,

Malheureusement, les informations que j'aimerais conservées ne sont pas toujours sur les mêmes lignes. Suivant le cas, des lignes s'intercalent avec des informations qui sont "inutiles" pour ce que je veux réaliser. De plus, je n'ai pas la possibilité de changer la manière dont les feuilles sont réalisées.

Je pensais qu'il avait moyen de lui dire tu recherches telle information ("Articles en stocks: …") et tu sélectionnes les lignes à partir de celle-ci jusqu'à que tu rencontres "pour 100 articles". Quoique là, comme le nombre de lignes entre "Articles en stocks: …" et "pour 100 articles" reste constant, je pourrai lui dire le nombre de lignes à conserver à partir de ("Articles en stocks: …".

Il y a bien la solution des copier/coller mais je pensais qu'il y avait peut-être une solution pour gagner du temps. De plus, entre chaque informations, il y a une ligne vide (je peux les supprimer en cliquant sur "Edition" > "Atteindre..." > "Cellules..." et cochant "Cellules vides", ensuite je supprime ces lignes).

Pour ma question "y a-t-il moyen de conserver uniquement les nombres des différentes lignes?", avez-vous une solution? Je peux réaliser cette opération de cette façon, en cliquant sur "Données" > "Convertir...", puis en cochant "Délimité" > "Suivant", puis en cochant "Espace", puis en cliquant sur "Suivant" > "Terminer". Mais les problèmes sont que les nombres ne se retrouvent pas toujours dans la même colonne et que je dois penser à aller décocher "Espace" dans la fonction pour éviter des soucis quand je vais dans d'autres classeurs.

Pour ma question "Je sais utiliser la fonction transposition mais y a-t-il moyen d'effectuer la même transposition sur plusieurs feuilles d'un coup?", j'ai réfléchi cela ne me fera pas gagner du temps, car je devrai copier/coller les résultats obtenus dans le tableau un à un car ils seront sur différentes feuilles.

Je suis peut-être parfois agaçant avec mes questions et j'en suis désolé, mais j'aimerais vraiment améliorer le plus possible mes connaissances en bureautique ne fût-ce que pour le milieu professionnel, car je fais un graduat en secrétariat et malheureusement les langues étrangères ne sont pas mon point fort, donc je me dis autant évoluer le plus possible dans ce que je "maîtrise" le mieux, tout en essayant d'évoluer dans les matières plus délicates. Il y a tant de domaine de connaissances à développer qui sont vraiment intéressants, mais les journées sont courtes, nous ne pouvons pas tout apprendre. Les projets ne manquent pas non plus mais là encore, il faut se limiter.

Je vous remercie pour votre aide et je m'excuse pour mes longs romans, j'aime être clair, mais parfois j'entre dans des détails vraiment inutiles.
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
18 mai 2009 à 10:56
Bonjour tout le monde,

C'est vrai que les fichiers irréguliers sont une plaie mais eagnix dit une chose interessante :
J'aimerais garder de la ligne "Articles en stocks: …" à "… qui est un point de départ unique (enfin j'espère), et à-priori ensuite il y a une régularité.

A tester :
Sub nettoie()
    Dim i As Long, j As Long, k As Long
    Dim w As Worksheet
    For Each w In Worksheets
        w.Activate
        On Error GoTo suivant
        i = Columns("A:A").Find(" Articles total en stocks", LookIn:=xlValues).Row
        On Error GoTo 0
        Range("A1:A" & i - 1).EntireRow.Delete
        [2:3].EntireRow.Delete
        'recup 1er nombre
        For i = 1 To [A65536].End(xlUp).Row
            For j = 1 To Len(Cells(i, 1))
                If Mid(Cells(i, 1), j, 1) >= "0" And Mid(Cells(i, 1), j, 1) <= "9" Then
                    k = InStr(j + 1, Cells(i, 1), " ")
                    If k = 0 Then k = Len(Cells(i, 1)) + 1
                    Cells(i, 1) = Mid(Cells(i, 1), j, k - j)
                    Exit For
                End If
            Next j
        Next i
suivant:
    Next w
End Sub

eric
0
Bonjour gbinforme,

Je te remercie pour ton aide, je n'aurai jamais pensé comparer la bureautique et le jardinage mais bon, c'est vrai que certaines règles de base se retrouvent un peu partout.

Bonjour eriiic,

La ligne "Articles en stocks: ..." est toujours notée de la même façon par contre elle peut être à la ligne 16, 18, 20... Cependant, de la line "Articles en stocks: …" à la ligne "… pour 100 articles" le nombre de ligne et les données sont constantes (une ligne d'information, une ligne vide…). Ensuite, il y a encore d'autres lignes qui ne sont pas nécessaires pour ce que je veux réaliser non plus.

J'essaierai ta macro quand j'aurai plus de temps libre (là j'ai trois projets professionnels à rendre pour mercredi matin). Au fait, si j'ai bien compris ta macro, car je n'y connais pas vraiment en programmation, elle va rechercher la ligne "Articles total en stocks" et conserver uniquement les nombres de cette ligne à la ligne 65536.

Pour les lignes qui ne sont pas nécessaires en dessous, ce n'est pas grave, je crois qu'elles sont toujours identiques, donc après la manipulation je sélectionnerai ces lignes sur toutes les feuilles (en mode groupe de travail) et je les effacerai.

Dans un autre classeur, j'ai aussi des lignes avec du texte et des nombres, mais là il n'y aura pas de lignes à supprimer, je veux juste garder les nombres, je peux utiliser une partie de ta macro pour réaliser cela ou y a-t-il une fonction plus simple?

Si j'ai bien compris ta macro voilà le résultat pour garder uniquement le premier nombre des lignes.

LookIn:=xlValues).Row
On Error GoTo 0
Range("A1:A" & i - 1).EntireRow.Delete
[2:3].EntireRow.Delete
'recup 1er nombre
For i = 1 To [A65536].End(xlUp).Row
For j = 1 To Len(Cells(i, 1))
If Mid(Cells(i, 1), j, 1) >= "0" And Mid(Cells(i, 1), j, 1) <= "9" Then
k = InStr(j + 1, Cells(i, 1), " ")
If k = 0 Then k = Len(Cells(i, 1)) + 1
Cells(i, 1) = Mid(Cells(i, 1), j, k - j)
Exit For
End If
Next j
Next i
suivant:
Next w
End Sub

Encore trois petites questions (je sais, je suis un emmerdeur (rire)).

Dans le cas où il y aurait deux nombres à conserver cela serait-il possible?

Parfois dans les noms, il y a du texte et des chiffres (exemple: MDD-13…), cela va-t-il poser des problèmes pour conserver les nombres (conflits) ou alors fera-t-il la part des choses entre un nombre (36000, 60000) et du texte avec des chiffres (MDD-14, MDD-99…)?

Dans ta macro, j'ai vu qu'il y avait pleins d'espaces devant certaines lignes (sûrement pour une lecture plus facile), quand je la copie dans Excel 2003, je les laisse ou je les enlève?

Je vous remercie tous les deux ainsi que Raymond pour vos nombreux conseils et votre aide, j'espère un jour avoir le niveau nécessaire pour moi aussi pouvoir aider d'autres personnes.
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
18 mai 2009 à 17:30
si j'ai bien compris ta macro
Le mieux pour le comprendre est de la tester, en pas à pas si besoin.

pour garder uniquement le premier nombre des lignes.
'recup 1er nombre
For i = 1 To [A65536].End(xlUp).Row
For j = 1 To Len(Cells(i, 1))
If Mid(Cells(i, 1), j, 1) >= "0" And Mid(Cells(i, 1), j, 1) <= "9" Then
k = InStr(j + 1, Cells(i, 1), " ")
If k = 0 Then k = Len(Cells(i, 1)) + 1
Cells(i, 1) = Mid(Cells(i, 1), j, k - j)
Exit For
End If
Next j
Next i
Cherche le 1er chiffre et l'espace qui le suit, élimine tout le reste.

Tiens-toi à la question d'origine, si tu as un autre problème sans rapport il faut démarrer un autre post.
Pense aussi à t'inscrire pour passer les posts en résolu, c'est plus sympa (et plus efficace) pour les helper de ne pas à avoir à tout lire pour s'apercevoir que c'est fini.

eric
0