Ajout de lignes automatique

Bonjour, Je débute en VBA, j’ai soif d’apprendre (d’où mes nombreuses questions) et j’ai un petit souci …

J’ai un tableau de base et je voudrais rajouter des colonnes automatiquement

-2 types de transport « WWW » et « ZZZ »

Pour chaque pays j’aimerai avoir les 2 types de transports, même si il n’y a pas eu de transport

Si vous regarder le fichier que j’ai joins, en Algérie on a fait que du transport « ZZZ »

J’aimerai que la macro rajoute une ligne plus haut en reprenant les même intitulé de colonne A, B et C, mais en remplaçant « ZZZ » par « WWW » et indiquer « 0 » dans le nombre de transport

SI « ZZZ » est présent, rajouter la ligne « WWW » au-dessus

SI « WWW » est présent, rajouter la ligne « ZZZ » en-dessous

Merci d’avance à ceux qui prendront le temps de me lire …

9test-z.zip (4.48 Ko)

Bonjour,

Sub AjouterTrspt()
    Dim i%, h%, ttr$, pl
    i = 2
    Application.ScreenUpdating = False
    With ActiveSheet
        Do While .Cells(i, 1) <> ""
            If .Cells(i + 1, 1) <> .Cells(i, 1) Then
                Select Case .Cells(i, 4)
                    Case "ZZZ"
                        h = i: ttr = "WWW"
                    Case "WWW"
                        h = i + 1: ttr = "ZZZ"
                End Select
                pl = .Range("A" & i & ":C" & i).Value
                .Rows(h).Insert , xlFormatFromRightOrBelow
                .Cells(h, 1).Resize(, 3).Value = pl
                .Cells(h, 4) = ttr: .Cells(h, 5) = 0
            End If
            i = i + 2
        Loop
    End With
End Sub

Cordialement.

20vinz56-test-z.zip (11.51 Ko)

Merci MFerrand, cependant quand je l'adapte à mon fichier, une ligne bloque ..

".Rows(h).Insert , xlFormatFromRightOrBelow"

Saurais-tu d'où pourrait venir le problème ? hélas je ne peux pas joindre le fichier original ..


Sachant que la macro se lance à partir d'une autre feuille du classeur

Bonsoir,

Je ne connais pas ton fichier ! Est-il différent du modèle ?

Quel numéro d'erreur (ou type indiqué) ? Et quelle valeur de h au moment de l'erreur ? (après clic sur Débogage, survol de h avec la souris, sa valeur s'aaffiche dans une info-bulle).

Le message est d'erreur est "Erreur 1004" "Erreur définie par l'application ou par l'objet"

h=0

Le tableau est le même, seule les valeurs à l'intérieur du tableau change

Merci de ton temps


J'ai juste changé dans ta macro, les "ZZZ" et "WWW" par les valeurs correctent


J'ai trouvé, merci bcp pour ton aide !!!!

Enfaite c'est pcq je la mettais dans une autre macro ... Du coup je fais 2 macro (la mienne et la votre), plus chiant mais ça a résolu le problème

Votre macro décale les cellules ? car J'ai une cellule dans un autre fichier qui utilise la cellule E2, mais quand j'active votre macro, la cellule de mon autre feuille n'est plus en lien avec E2 mais avec E3

Je sais que je suis chiant mais cela me bloque ... si quelqu'un à une idée ..

J’aimerai que la macro rajoute une ligne plus haut en reprenant les même intitulé de colonne A, B et C, mais en remplaçant « ZZZ » par « WWW » et indiquer « 0 » dans le nombre de transport

SI « ZZZ » est présent, rajouter la ligne « WWW » au-dessus

SI « WWW » est présent, rajouter la ligne « ZZZ » en-dessous

Il faut :

1) Savoir ce que tu demandes !

2) Fournir un fichier adéquat, comportant tous les éléments dont il convient de tenir compte !

La macro fait très exactement ce que tu as demandé.

Sorry je ne suis pas "passionné d'Excel" ! µ

Je comprends pas forcément tout sur les macro et tout ce qu'il faut prendre en compte !

Mais pas grave ! merci Monsieur !

Sans rien connaître aux macros ni même à Excel, quand tu demandes d'ajouter une ligne avant une autre, la ligne ajoutée prendra la place de celle qui était là avant, laquelle aura reculé d'un rang.

L'expérience accumulée depuis la plus tendre enfance te permet de prévoir que si tu ranges un livre avant un autre dans un rayonnage, le dernier rangé prend la place du précédent dont le rang recule, si tu ajoutes une assiette sur un pile, celle qui était la première auparavant ne le sera plus, etc. Ce phénomène n'a rien de particulier à Excel !

J'ajoute une ligne en position 2, l'ancienne ligne 2 deviendra la 3, E2 deviendra donc E3...

Votre macro décale les cellules ? car J'ai une cellule dans un autre fichier qui utilise la cellule E2,

Je veux bien croire que tu n'aies pas pensé à y pensé avant... mais avoue que les précisions que tu donnes sur ce nouveau problème sont plus que sommaires !

On peut supposer qu'il s'agit d'une formule, car le problème ne se poserait en principe pas avec une macro...

Quelles solutions ?

  • Faire en sorte que E2 reste toujours E2 : ce serait une exception gênante, d'autant que ce ne sont pas les solutions qui manquent.
  • Modifier la formule de façon qu'elle n'utilise plus E2 ! Ça c'est facile : on utilise par exemple E1, qui ne bougera pas, la cellule décalée de 1 ligne par rapport à E1 sera toujours la E2 actuelle...
  • Remplacer la formule par une macro : avantage supplémentaire, on élimine une liaison entre classeurs...

Et peut-être y a-t-il encore d'autres solutions, que l'on pourrait envisager, une fois le problème effectivement posé , ce qui n'a pas été le cas.

Cordialement.

Merci pour ton roman.

J'ai ajouté un copier coller, une macro vient prendre le tableau créé pour le mettre dans une feuille ou du coup aucune cellule n'a été supprimée, je garde donc mes référence et donc mes livres sont bien rangé !

Moi aussi je peux trouvé une logique dans quelque chose ou j'"excel" (je fais fort la) et où toi, tu pourrais avoir des difficultés, et pour le coup te faire aussi passé pour un idiot

Sur ce ! Merci de ton aide

Crdt

Loin de moi toute idée de mettre en cause les compétences de qui que ce soit dans quelque domaine que ce soit ! Cela n'aurait aucun sens ! Formuler une demande sur un Forum repose sur un appel aux connaissances d'autres intervenants pour cerner une question sur laquelle on bute ou dont simplement on hésite sur la résolution la plus appropriée...

Par contre, il me semble que l'on peut exiger de tous (sans exception) d'admettre que pour être résolue, une question doit d'abord être posée avec la totalité de ses tenants et aboutissants, et que l'on ne peut demander une solution à une question non formulée...

Rechercher des sujets similaires à "ajout lignes automatique"