Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

jrobillard

XLDnaute Nouveau
Bonjour,

Comme je suis très(très) mauvais en programmation, je me demandais si il y avais un gentleman (ou gentlewoman) qui pourrait m'aider sur ce cas d'automatisation.
Je joint un fichier excel. Prenez pour aquis que le nombre de ligne sont invariable.

Donc en ordre:

1-Supprimer toute fusion(Fusionner et centrer)

2-Appliquer dans:
1-H9 la formule suivante pour toute la collone entière:
=SUBSTITUE(INDIRECT(ADRESSE(MAX((GAUCHE($A$5:$A9;4)="Trip")*LIGNE($A$5:$A9));1));"Trip:";"")*1
2- I9 la formule suivante pour toute la collone entière:
=STXT($A$6;10;50)
3- J9 la formule suivante pour toute la collone entière:
=DROITE(GAUCHE($A$4;9);2)
4- K9 la formule suivante pour toute la collone entière:
=DROITE($A$2;12)

3- Copier/Coller le texte en valeur seulement.

4-Supprimer les espace de trop. Ex du fichier excel.: Entre les ligne 56 et 66, entre 120 et 130, [1690 à 1714] etc...etc...

5- Mettre les titres au cellulle suivante:
H8: Voyage
I8: Direction
J8: Circuit
K9: Date

Et si possible.: M'expliquer comment vous avez fait pour comprendre. 🙂

Je vous remercie vraiment beaucoup de votre aide généreuse.

Bonne journée
 

Pièces jointes

  • 2.xls
    2.xls
    220.5 KB · Affichages: 63
  • 2.xls
    2.xls
    220.5 KB · Affichages: 69
  • 2.xls
    2.xls
    220.5 KB · Affichages: 69
Re : Creation Macro

Bonjour jrobillard,

Il faudrait peut-être expliquer l'intérêt qu'il pourrait y avoir à recopier sur une colonne entière, des formules comme celles que tu nous livres 😕 parce que là, je n'ai qu'un gigantesque point d'interrogation entre les deux oreilles.
Bon d'accord, sous mon crâne presque chauve, c'est du plus bel effet ... mais ça ne t'avance guère!
 
Re : Creation Macro

Salut

Je peux sortir des rapports d'un système, mais je ne peux avoir accès à la base de donnée directement. J'essaie donc d'automatisé la tâche en créant une macro. Étant donnée le peu de connaissance que j'ai en Macro/programmation, je me retourne vers vous.
Cette tâche permettrais de "machouiller" les données pour les préparer à les introduires dans ma base de données.

Aussi quand je dis copier, c'est plus on copie dans la 1ère cellule et ensuite on fais defiler par le bas pour que les valeurs s'incrémente.

Je ne sais pas si cela répond à ta question?

Merci
 
Re : Creation Macro

Re-bonjour,

Je ne sais pas si cela répond à ta question?
Pas vraiment ...
Si je prends ta formule "=STXT($A$6;10;50)": elle fait apparaître, dans toutes les cellules de la colonne I le texte suivant:
: Direction Saint-Jérôme
(le double point et l'espace qui le suit sont-ils les bienvenus?

Dans toute la feuille de calcul, il faut chaque fois aller chercher le Voyage, la Direction, le Circuit et la Date dans les mêmes cellules et toujours au niveau du
- 7e caractère en A5, pour le Voyage
- 8e caractère en A4 (et ce seront toujours 2 caractères qu'il faudra extraire?) pour le Circuit
- 12e caractère en A6 pour la Direction
et toujours les 12 derniers en A2 (même en Septembre?) pour la date? Pourquoi le titre pour celle-ci en K9?? Plutôt K8?

Précise aussi ce que sont tes "espaces en trop": ce seront toujours les 11 lignes comprises entre celle juste au-dessus de "Totals:" jusqu'à celle qui contient "Stop"?

Et le "coller valeurs seulement" concerne uniquement les 4 colonnes où les formules auraient été recopiées??


Edit: Salut Dull! ... espèce d'infâme personnage, j'ai dit mon crâne presque chauve! 😀
 
Dernière édition:
Re : Creation Macro

Salut,

J'ai remplacé la formule
"=STXT($A$6;10;50)"
PAR
=SUBSTITUE(INDIRECT(ADRESSE(MAX((GAUCHE($A$6:$A9;9)="Direction")*LIGNE($A$6:$A9));1));"Direction:";"")

Le titre c'est les en-tête de chargement pour la BD. C'est la continuation de
Stop, Boarding..., Deboarding...., Max load..., etc.. LE K9 est une erreur de frappe désolé.. on aurait du lire K8.

Effectivement les espaces en trops seront toujours les 11 lignes(J'espère que le fournisseur de service ne me changera pas cela plus tard)

Oui cela concerne uniquement les colonnes dont les formules on été copiés.

Merci de prendre le temps de me répondre, super apprécié.
 
Re : Creation Macro

Bonsoir le fil,

@Dull: merci pour les adjonctions capillaires (attends un peu que je passe par Saint-Pierre de la Réunion!) 😉

@jrobillard: avec ce que j'ai cru comprendre, voici ce que tu pourrais tester.
Ouvre ton fichier et appuye sur Alt+F11. La fenêtre du Visual Basic Editor s'ouvre. Dans le menu Insertion, choisis "Module" et colle ensuite dans la "page blanche", ce qui suit:
VB:
Sub ColSup()
Application.ScreenUpdating = False
With Sheets(1)

Voyage = Mid(.Cells(5, 1), 7)
Direction = Mid(.Cells(6, 1), 12)
Circuit = Mid(.Cells(4, 1), 8, 2)
laDate = Right(.Cells(2, 1), 12)

While Application.CountIf(.Range("A:A"), "Totals:") > 0
    vides = Application.Match("Totals:", .Range("A:A"), 0)
    .Range("A" & vides).Offset(-1, 0).Resize(11, 1).EntireRow.Delete
Wend

.Range("H8:K8") = Array("Voyage", "Direction", "Circuit", "Date")

derligne = .Range("A" & Rows.Count).End(xlUp).Row - 1
.Range("H9:H" & derligne).Value = Voyage
.Range("I9:I" & derligne).Value = Direction
.Range("J9:J" & derligne).Value = Circuit
.Range("K9:K" & derligne).Value = laDate
.Range("J9:J" & derligne).NumberFormat = "00"
.Range("K9:K" & derligne).NumberFormat = "MMM dd, yyyy"

End With
Application.ScreenUpdating = True
End Sub

Appuye cette fois sur la touche F5; la macro va s'exécuter ... il ne te restera plus qu'à vérifier si tu obtiens le résultat attendu (il est, bien entendu, nettement recommandé de faire les tests sur une copie du fichier et non sur l'original)

Tu nous diras ce qu'il en est, je présume?
 
Re : Creation Macro

Salut,

Merci beaucoup pour ce que tu fais pour moi.

En gros ça répond à 75% de ce que je veux.

Le bémol est que le voyage et la direction change.
Une fois ta macro éxécuté c'est le même voyage (1) qui se répète

Si le circuit fait une loop, la direction ne changera pas, mais faut tout de même le prendre en considération et toujours vérifier si la direction à changé.
=================
Exemple du fichier:
Ligne 62 à 64
Route: 03 - Saint-Jérôme - secteur Centre
Trip: 2
Direction: Direction Saint-Jérôme
=================
Donc maintenant le voyage(trip) serait 2 et la direction saint-jerome

Je ne sais pas si tu comprends?
Je vais te mettre le fichier terminé pour te donné un exemple de référence
PS.: J'ai supprimé les espace jusqu'a 634 pour l'exemple seulement, mais on dois tous les supprimées.

Merci beaucoup beaucoup
 

Pièces jointes

Re : Creation Macro

Bonjour jrobillard, le fil,

Aaah ouiche, c'est sensiblement différent de ce que j'avais compris! Peux-tu remplacer le code précédent par celui-ci
VB:
Sub ColSup()
Application.ScreenUpdating = False
With Sheets(1)
    .Range("H8:K8") = Array("Voyage", "Direction", "Circuit", "Date")
    derligne = .Range("A" & Rows.Count).End(xlUp).Row - 1
    
    Set trip = .Range("A:A").Find(What:="Trip: ", LookIn:=xlValues, Lookat:=xlPart)
    depart = trip.Address
    Do
        Voyage = Mid(trip.Value, 7)
        Direction = Mid(trip.Offset(1, 0), 12)
        Circuit = Mid(trip.Offset(-1, 0), 8, 2)
        laDate = IIf(laDate = "", Right(trip.Offset(-3, 0), 12), laDate)
        .Range("H" & trip.Row + 4 & ":H" & derligne).Value = Voyage
        .Range("I" & trip.Row + 4 & ":I" & derligne).Value = Direction
        .Range("J" & trip.Row + 4 & ":J" & derligne).Value = Circuit
        .Range("K" & trip.Row + 4 & ":K" & derligne).Value = laDate
        Set trip = .Range("A:A").FindNext(trip)
    Loop While Not trip Is Nothing And trip.Address <> depart
    
    .Range("J9:J" & derligne).NumberFormat = "00"
    .Range("K9:K" & derligne).NumberFormat = "MMM dd, yyyy"
    While Application.CountIf(.Range("A:A"), "Totals:") > 0
        total = Application.Match("Totals:", .Range("A:A"), 0)
        .Range("A" & total - 1).Resize(11, 1).EntireRow.Delete
    Wend
End With
Application.ScreenUpdating = True
End Sub

... et tester en long, en large et en travers, tout en croisant les doigts pour que la "structure" du fichier reste identique!

-----------------------
@ 00: je vois bien qu'avec Dull, tu te gausses de concert de mes quatre poils sur le caillou. Ah on n'est pas aidé sur ce forum! 😉
 
Re : Creation Macro

Salut,

Ça l'air de super bien fonctionner. Je vais faire des tests en profondeurs, mais cela semble répondre à 100% à mes besoins.

Si je peux te déranger une petite dernier fois.
Quand je fais un tableau croisé dynamique à partir des données, je perds la logique des arrêts (STOP) puisque Excel les mets en ordre alphanumérique.
La logique des arrêts est toujours la même sauf que ça peux changer dépendamment de la direction. Il peux aussi des fois manqués 1 arrêts dans la liste.

Il y a tu de quoi à faire?



Pour le reste je te remercies vraiment beaucoup.
C'est très très très appréciées.

Merci beaucoup et passe une excellente fin de journée
 
Re : Creation Macro

Bonjour, jrobillard, Modeste 🙂, Dull 🙂, le Forum,

@ Modeste :

@ 00: je vois bien qu'avec Dull, tu te gausses de concert de mes quatre poils sur le caillou. Ah on n'est pas aidé sur ce forum!

Me gausser ? Moi 😱 ? Ah, certainement pas, Modeste : je ne sais que braire 😛

attachment.php

Ceci dit, je présente mes excuses à jrobillard pour mon intrusion dans cette discussion… Mais... pas pu m'empêcher 😉 !

A bientôt 😀🙂
 

Pièces jointes

  • Non, non !.jpg
    Non, non !.jpg
    17.7 KB · Affichages: 186
Re : Creation Macro

Bonsoir gente dame, joli damoiseau, ... et puis Dull aussi! 😛

jrobillard à dit:
Quand je fais un tableau croisé dynamique à partir des données, je perds la logique des arrêts (STOP) puisque Excel les mets en ordre alphanumérique.
😕 Oserais-je avouer que je n'ai rien compris? 😕


jrobillard à dit:
La logique des arrêts est toujours la même sauf que ça peux changer
Ah oui, mais non! Il faut savoir! 😉


jrobillard à dit:
Il y a tu de quoi à faire?
... Euh 😱


Bon je te charrie un tantinet, mais il faudrait que tu expliques plus clairement ... sauf si quelqu'un d'autre se propose d'intervenir!
 
Re : Creation Macro

Salut,

L'autobus à un GPS. Les arrêts sont toute géolocalisé. Si le GPS vient à manquer pendant un cours laps de temps, je n'ai pas le(s) arrêt(s) à laquelle l'autobus à passé. D'ou pourquoi il ce peux qu'il me manque certains arrêts. Un autobus peux soit faire une loop(cercle) (il revient donc à son endroit de départ) ou il le fais de manière linéaire. Son départ est le point A et son arrivé est le point B. Ensuite sont départ sera du point B, vers le point A. Mais il y a une certaine logique, l'autobus ne s'arrête pas à l'arrêt qu'il veux. Il y a une suite "logique". Si je fais un tableau croisé dynamique, celui-ci tri par ordre alphanumérique. Quoi que je devrais dire numérialpha ??.
De toute façon, j'aimerais gardé la logique des arrêts.

Me suis tu plus là? 🙂

Merci
 
Re : Creation Macro

Re-bonsoir,

Me suis tu plus là?
Disons qu'il y a des jours où je me sens moins jeune, des jours où je suis plus fatigué ... aujourd'hui, les deux doivent se combiner, parce que je ne perçois pas la moindre étincelle de clarté! 🙁

Ton TCD, tu le crées sur les données après exécution de la macro? Et il permettrait de montrer quoi?

Je n'aurai sans doute pas beaucoup de temps disponible pendant les journées ... Bienvenue aux autres intervenants qui auraient des idées (pour autant que les explications soient claires 🙂)
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour