VBA - Copie d'une feuille dans un classeur + insertion colonne

Alex74330

XLDnaute Nouveau
Bonjour à tous ! :)

Me voilà confronter à un grand, que dis-je un énorme, une montagne de problèmes !!
Je n'ai jamais (voir très peu) eu à faire à VBA et là je crois que je ne peux pas l'éviter.

1- Je cherche a copié l'onglet "Liste-Actions" du fichier tasks19 dans un nouvel onglet du fichier "fichier action".
Jusqu'à là peut-être rien ne vous effraie.


2- J'aimerai ensuite copier (comme pour les autres) la colonne "Deadline" (Colonne H (numéro 8 pour la recherchev)) dans l'onglet REF du fichier action juste après les autres "taskw16-17..)

Normalement le reste du calcul se fera tout seul.

J'espère avoir été assez claire !
Et je vous remercie tous par avance de votre aide qui m'est précieuse !

Cordialement,
Alexandre
 

Pièces jointes

  • fichier action.xlsx
    149.1 KB · Affichages: 43
  • tasks19.xlsx
    50.1 KB · Affichages: 43
  • fichier action.xlsx
    149.1 KB · Affichages: 57
  • fichier action.xlsx
    149.1 KB · Affichages: 41

Alex74330

XLDnaute Nouveau
Re : VBA - Copie d'une feuille dans un classeur + insertion colonne

Re,

Oui c'est exactement ça le principe !

Car sinon chaque année je vais avoir 50 colonne de plus, pour des infos qui peuvent être les mêmes.
Je pense qu'il serait plus judicieux de garder uniquement les dates changeantes, après je ne sais pas si celà est difficile à faire ou pas.. !
 

adel53

XLDnaute Occasionnel
Re : VBA - Copie d'une feuille dans un classeur + insertion colonne

Alex

Ci-dessous le code

Code:
Sub test()
    Dim cell As Range
    Dim rng As Range
    Dim nom As String
    Dim derligne
    With Application
        .ScreenUpdating = False
        .Calculation = xlManual
    End With
    derligne = Sheets("REF").Cells(Rows.Count, 10).End(xlUp).Row
    For Each cell In Range("A1:AK1")
        On Error Resume Next
        If Left(cell.Value, 5) = "taskw" And cell.Offset(0, 1).Value = "TOP RO" And cell.Value <> Sheets(Sheets.Count).Name Then
            Debug.Print cell.Value
            Columns(cell.Offset(0, 1).Column).EntireColumn.Insert
            Sheets("REF").Range(cell.Offset(0, 1).Address).Value = Sheets(Sheets.Count).Name
            Range(cell.Offset(1, 1).Address).Formula = _
            "=IF(VLOOKUP(RC7," & Sheets(Sheets.Count).Name & "!R2C1:R51C8,8,0)=RC[-1],"""",IFERROR(VLOOKUP(RC7," & Sheets(Sheets.Count).Name & "!R2C1:R51C8,8,FALSE),""Non existant""))"
            Range(cell.Offset(1, 1).Address).AutoFill Destination:=Range(Cells(2, cell.Offset(0, 1).Column), Cells(derligne, cell.Offset(0, 1).Column))
        End If
    Next cell
    With Application
        .ScreenUpdating = True
        .Calculation = xlAutomatic
    End With
End Sub
 

Alex74330

XLDnaute Nouveau
Re : VBA - Copie d'une feuille dans un classeur + insertion colonne

Re Adel,

Merci pour ta réponse si rapide !

Le code marche-t-il pour toi ?
Car de mon côté, la colonne est tout de même insérée et toutes les valeurs sont égales à N/A.

Après verification, je ne sais pas d'où vient le problème.

Cordialement
 

adel53

XLDnaute Occasionnel
Re : VBA - Copie d'une feuille dans un classeur + insertion colonne

si les valeurs sont égales à NA cela veut dire qu'il ne trouve pas de correspondance
peux tu analyser la formule insérer voir si on pointe bine sur les bonnes cellules
 

Alex74330

XLDnaute Nouveau
Re : VBA - Copie d'une feuille dans un classeur + insertion colonne

Tu avais raison, mon fichier originel était différent par rapport à mon fichier test. Après ajustement, je retrouve les valeurs, cependant certaines n'ont pas de correspondance, il faudra que je vérifie ça.
Penses tu possible le fait d'avoir juste les valeurs changeantes pour chaque ligne ?
Je m'explique, admettons que nous sommes à la semaine 30 et que de la semaine 1 à 30 il y a eu que 3 changements pour une action (une ligne), alors seulement ces trois changements sont retranscris. Qu'il y ai finalement que 3 colonnes derrière ma colonne "nombre de reports" et non 30 (le nombre de semaine).
 

Alex74330

XLDnaute Nouveau
Re : VBA - Copie d'une feuille dans un classeur + insertion colonne

Bonjour adel53,

Excuse moi mais je n'avais pas vu ton message.
J'ai essayé de faire un fichier test mais je le pensais très peu représentatif.

Après reflexion, je pense que ca doit etre très compliqué, je t'explique.

Après la colonne nbr de report, au lieu d'avoir les tasks1, 2, 3.. avoir changements 1, 2 , 3

1- Il faudrait que la rechechev qui est actuellement en vigueur fasse la recherche, une fois la date trouvé (ou non), qu'elle la compare avec le dernier changement qu'il y a eu. Si il n'y a pas eu qu'elle compare la date trouvée avec la date "Deadline".

2- Si la valeur est identique, rien a faire. Si la valeur diffère alors il faudrait la recenser dans la colonne changement 1, ou 2 biensur s'il y en a eu avant.

3- Si la recherchev trouve "non existant" alors recenser la valeur comme un changement.

PS: Dans le code précedemment donné, j'ai voulu rajouté un sierreur englobant toute la formule car elle ne le fait pas.
Ex: SIERREUR(Formule;"Non existant") mais je n'ai pas réussi.

Voilà voilà, désolé de te répondre si tardivement et dis moi ce que tu en penses.

Cordialement,
Alexandre
 

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 330
Membres
102 862
dernier inscrit
Emma35400