Impossibilité de copier/coller une colonne en lien avec la cellule active
Bonjour à tous,
C'est mon tout premier message sur le forum et je suis débutant en excel et VBA, merci d'être indulgent avec moi !
J'ai écris une macro pour permettre que :
Quand une cellule est active et qu'on lance la macro celle-ci va trouvé l'entête de la colonne pour ouvrir une feuille comportant le nom de l'entête, l'ouvrir et dans cette autre feuille elle va chercher la colonne qui correspond au nom de la cellule active de départ.
Une fois cette colonne trouvé, elle va la copier pour la coller dans une autre feuille, et ce schéma pour 4 colonnes et 2 feuilles au total
Je sais pas si j'ai été très claire dans mes explications ... Mais là où je bloque c'est que la macro s'arrêter à la première ligne permettant d'allez sur la première colonne à copier "Sheets(t1).Range(t4).Select" mais je pense que cela vient de la variable t4 qui ne ce définit pas correctement
Je vous laisse observé ci-dessous les lignes de code que j'ai bidouillé ...
Merci d'avance.
Sub Macro3()
'
' Macro3 Macro
'
t0 = ActiveCell.EntireColumn.Cells(1, 1)
t1 = t0 + " Avant_livraison"
t2 = t0 + " Après_livraison"
Dim plage As Range
'On recherche dans la feuille "avant livraison"
Set plage = Sheets(t1).Range("2:2")
Monchiffre = ActiveCell
For Each Cell In plage
If Cell.Value = Monchiffre Then
t5 = Cell.Address
t3 = Range(t5).Column
t4 = Range(Cells(t3, 2), Cells(t3, 5000))
'On cherche et copie/colle la première colonne du cumul
Sheets(t1).Range(t4).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("individuel").Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'On cherche et copie/colle la première colonne des matricules
Sheets(t1).Range("C2:C5000").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("individuel").Range("C1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
Next Cell
'On recherche dans la feuille "après livraison"
Set plage = Sheets(t2).Range("2:2")
Monchiffre = ActiveCell
For Each Cell In plage
If Cell.Value = Monchiffre Then
t5 = Cell.Address
t3 = Range(t5).Column
t4 = Range(Cells(t3, 2), Cells(t3, 5000))
'On cherche et copie/colle la deuxième colonne du cumul
Sheets(t2).Range(t4).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("individuel").Range("B1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'On cherche et copie/colle la deuxième colonne des matricules
Sheets(t2).Range("C2:C5000").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("individuel").Range("D1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
Next Cell
End Sub[EDIT] Je rajoute le fichier correspondant, je l'ai réduit pour pouvoir rentré dans la taille maximum
[EDIT 2] Décidément je fatigue, j'ai oublié qu'on partait de la feuille "Ecarts" en sélectionnant une cellule ce trouvant en colonne B ou I pour terminer en feuille "Individuel" à la fin de la macro.
Slt Yarond et
essaie comme ca,
Sub Macro3()
'
' Macro3 Macro
'
t0 = ActiveCell.EntireColumn.Cells(1, 1)
t1 = t0 + " Avant_livraison"
t2 = t0 + " Après_livraison"
Dim plage As Range
'On recherche dans la feuille "avant livraison"
Set plage = Sheets(t1).Range("2:2")
Monchiffre = ActiveCell
For Each Cell In plage
If Cell.Value = Monchiffre Then
t5 = Cell.Address
t3 = Range(t5).Column
Sheets(t1).Activate
Sheets(t1).Range(Cells(t3, 2), Cells(t3, 5000)).Copy
Sheets("individuel").Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
'On cherche et copie/colle la première colonne des matricules
Sheets(t1).Range("C2:C5000").Copy
Sheets("individuel").Range("C1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End If
Next Cell
'On recherche dans la feuille "après livraison"
Set plage = Sheets(t2).Range("2:2")
Monchiffre = ActiveCell
For Each Cell In plage
If Cell.Value = Monchiffre Then
t5 = Cell.Address
t3 = Range(t5).Column
'On cherche et copie/colle la deuxième colonne du cumul
Sheets(t2).Activate
Sheets(t2).Range(Cells(t3, 2), Cells(t3, 5000)).Copy
Sheets("individuel").Range("B1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'On cherche et copie/colle la deuxième colonne des matricules
Sheets(t2).Range("C2:C5000").Copy
Sheets("individuel").Range("D1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End If
Next Cell
End SubIl faut aussi verifier s‘il colle bien les donnees dans les bonnes lignes!
Merci pour le bienvenu et pour la réponse si rapide !
Alors j'ai modifié et réessayé mais quand je lance la macro, il n'y a rien qui ce passe, je n'ai plus d'erreur ou autre, mais j'ai littéralement plus rien qui s'affiche, aucune fenêtre qui s'ouvre, aucune feuille ou cellule qui change, tout reste à l'identique, même sur la feuille "individuel" ...
Je remet le fichier modifié du coup, si tu sais d'où ça peut venir, je n'ai jamais eu ça ...
Alors je retire ce que je viens de dire, j'ai testé la macro sur la colonne I, ça essai de passer sur la feuille individuel, mais ça "clignote" et ça fait planter excel mon excel ... Je pense pas avoir un ordinateur sur vieux que ça quand même
Re, essaie la macro modifiee en haut, il colle bien les donnees mais en haut dans la premiere ligne de l‘onglet „individuel“ par exemple
Effectivement, cela ne me donnait rien car sans comprendre pourquoi les deux premières feuilles étaient vidés ...
Mais il plante toujours lorsque j'utilise la macro sur la colonne I, et tout ce colle uniquement sur la première ligne ...
Mon problème de base est résolu, mais je reste toujours coincé sans pouvoir avancé, et je t'avoue que je sais pas d'où viens l'erreur du coup ...
Je met quand même en résolu ?
Re,
si tu veux par exemple qu'il colle les données aprés la dernière ligne de la colonne A, alors tu fais comme suivant:
Dim lRow as Long ' on declare une variable
lRow = Cells(Rows.Count, 1).End(xlUp).Row ' on calcule la première céllule non vide dans la colonne A' et aprés tu remplcae
Sheets("individuel").Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=Falsepar
Sheets("individuel").Range("A" & lRow).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=Falsepour la colonne I je vais jetter un coup d'oeil
Bon il faut changer cette ligne
t0 = ActiveCell.EntireColumn.Cells(1,1)en
t0 = ActiveCell.EntireColumn.Cells(1)Merci beaucoup !
Le problème est résolu et la macro marche correctement, j'ai juste la colonne B de la feuille écart qui n'est pas la bonne à ce coller, mais sinon tous le reste est good ! Merci encore