Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

copier/coller des cellules dans un tableau dans une autre feuille sous conditions

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 !

gabilletsimon

XLDnaute Nouveau
Bonjour à tous,
Je suis à mes débuts en macro et j'aurais besoin de votre aide.

Voici ce que je cherche a faire:

Je voudrais que lorsque qu'il y a marquer "CONTRÔLE EN RETARD" dans la colone "I" de la feuille "fichier de suivi",

la macro copie la valeur de la colone A de la meme ligne pour coller sa en colone "A" dans le tableau donc a partir de A9 dans le feuille "feuille de controle".

la macro copie la valeur de la colone F de la meme ligne pour coller sa en colone B dans le tableau donc a partir de B9 dans le feuille "feuille de controle".

dans l'ideal je voudrais faire une macro par grande entité avec un bouton pour chaque. comme vous pourrez le voir dans le fichier en pièce jointe qui illustrera mes propos et vous aidera à comprendre ma demande.

Voila j'attend vos idées 🙂
 

Pièces jointes

Re : copier/coller des cellules dans un tableau dans une autre feuille sous condition

Hello

essaie ce code (très long d'execution...) à mettre dans un module
Alt+F11 pour ouvrir l'editeur VBA
à gauche, dans l'explorateur du projet: clic droit, inserer module
et copier coller le code à droite dans la fenetre du module

Code:
Sub test()

nb = [I65536].End(xlUp).Row
Set ZoneTest = Sheets("fichier de suivi").Range("I7:I" & nb)
ZoneTest.Select

For Each ele In ZoneTest
    If ele = "CONTRÔLE EN RETARD" Then
        Range("A" & ele.Row).Copy Destination:=Sheets("feuille de controle").Range("A65536").End(xlUp).Offset(1, 0)
        Range("F" & ele.Row).Copy Destination:=Sheets("feuille de controle").Range("B65536").End(xlUp).Offset(1, 0)
        
    End If
Next ele

End Sub


dans l'ideal je voudrais faire une macro par grande entité avec un bouton pour chaque.

que veux tu dire exactement?
 
Re : copier/coller des cellules dans un tableau dans une autre feuille sous condition

Quand je dis : dans l'ideal je voudrais faire une macro par grande entité avec un bouton pour chaque.

Dans la feuille "fichier de suivi", il y a plusieurs groupe avec par exemple "SLP fabrication" ou "SLP conditionnement et expédition". ce que je voudrais donc c'est avoir c'est une macro qui fait ce que j'expliquais dans mon premier message mais que sa ne face sa que pour le service séléctionné.
et donc avoir une macro pour chaque service pour avoir la liste des controle qu'il ont a faire.

j'espère que vous me comprendrer car ce n'est pas evident à expliquer ^^
 
Re : copier/coller des cellules dans un tableau dans une autre feuille sous condition

Re,

ok, compris.. en fait. initialement. j'avais lu "grande QUANTITE"... va savoir pourquoi..

ci jointe une proposition avec un seul bouton, mais qui te demande quelle entité tu souhaites traiter..
pour cela. j'ai du procéder
1) à un ajout (onglet Liste) qui permet de lister les entités présentes:
-->à toi de le compléter si tu rajouttes des entités: attention, il faudra aussi modifier la zone nommée "listePostes" pour qu'elle prenne bien en compte ces ajouts.. à moins de faire une déclaration dynamique de cette zone..

2) une modification de la présentation
dans l'onglet "Fichier de suivi", j'ai du DEfusionner les cellules qui contiennent ces entités (lignes 5 350 362 422.....)
sinon, la méthode find utilisée dans la macro, ne trouve pas ce qu'elle cherche..
à savoir: en règle générale, VBA n'aime pas les cellules fusionnées

pour voir comment ca marche:
fait Alt+F11 pour ouvrir l'éditeur VBA
puis F8 pour une éxecution pas à pas
 

Pièces jointes

Re : copier/coller des cellules dans un tableau dans une autre feuille sous condition

est ce qu'il serait possible que la macro efface dans la liste de la 'feuille de controle" dans le cas ou il y a deja quelque chose d'écrit ?
dans le cas par exemple ou l'on lance deux fois de suite la macro, celle-ci mets bout a bout les deux listes.
je souhaiterai plus que la macro commence par tout effacer dans la feuille de controle et qu'ensuite elle inscrvie la liste dans les cellules prévu à cette effet.

Cela est-il possible ? si oui comment faire ?

C'est le dernier détail, sinon vous avez réalisé exactement ce que je cherchais a faire et je vous en remerci enormement !!!
 
Re : copier/coller des cellules dans un tableau dans une autre feuille sous condition

Hello


pas de souci. il suffit de rajoutter une ligne

Code:
Private Sub CBValider_Click()
Application.EnableEvents = False
Application.ScreenUpdating = False
'effacage des données déjà présentes dans l'onglet "feuille de  contrôle"
Sheets("feuille de controle").Range("A9:B" & Sheets("feuille de controle").Range("A65536").End(xlUp).Offset(1, 0).Row).ClearContents

'demande à l'utilisateur de choisir l'intitulé à reporter
choix = Me.LBChoix.Value
Unload Me

ActiveSheet.Outline.ShowLevels RowLevels:=1
'recherche de la position de l'intitulé pour pouvoir sélectionner toutes les data afférentes.
With ActiveSheet.Range("A4:A65536")
    Set c = .Find(choix, LookIn:=xlFormulas)
    'nb = NomZone.Row
    If Not c Is Nothing Then
        debut = c.Row
        ActiveSheet.Outline.ShowLevels RowLevels:=2
        fin = c.End(xlDown).Row
    End If
End With
Set ZoneTest = Sheets("fichier de suivi").Range("I" & debut & ":I" & fin)

'parcours de la colonne I et test du contenu
For Each ele In ZoneTest
    If ele = "CONTRÔLE EN RETARD" Then
        'copie de la colonne A vers la colonne A
        Range("A" & ele.Row).Copy Destination:=Sheets("feuille de controle").Range("A65536").End(xlUp).Offset(1, 0)
        'copie de la colonne F vers la colonne B
        Range("F" & ele.Row).Copy Destination:=Sheets("feuille de controle").Range("B65536").End(xlUp).Offset(1, 0)
        
    End If
Next ele
Application.EnableEvents = True
Application.ScreenUpdating = True
ActiveSheet.Outline.ShowLevels RowLevels:=1


End Sub
 
Re : copier/coller des cellules dans un tableau dans une autre feuille sous condition

Je vous remerci pour l'information cela fonctionne très bien ! 🙂

J'aurais aussi voulu savoir comment faire pour que quand la macro a finis sa tache que l'on arrive automatiquement sur l'onglet "feuille de controle".

Sinon j'aurais souhaiter faire une seconde macro qui :

1) prend les numéro d'échelle de la feuille 1 "feuille de suivi" pour le mettre dans la feuille 4 "liste des échelles" en colone "A" dans l'ordre croissant
2) qui donne le service associé dans la 4 "liste des échelles" en colone "B" ( le nom du service étant le nom de groupe de la feuille 1 "feuille de suivi")
3) qui donne le type d'échelle en colone "C" de la feuille 4 'liste des échelles" ( l'information étant dans la colone "B" de la feuille 1 "feuille de suivi" )
4) qui donne l'état de conformité associé aux échelles dans la colone "D" de la feuille 4 "liste des échelles" (l'information ce trouve dans la colone "I" de la feuille 1 "feuille de suivi")
5) la marco se termine sur la feuille 4 "liste des échelles"

Est ce que cela est réalisable ?
 

Pièces jointes

Re : copier/coller des cellules dans un tableau dans une autre feuille sous condition

Hello

pour la dernière action de la macro, suffit d'ajouter ceci à la fin de la macro
Sheets("feuille de controle").Activate

pour le reste. je regarde ;-)
 
Re : copier/coller des cellules dans un tableau dans une autre feuille sous condition

Voici une proposition..

Je me suis permis de modifier le nom de l'onglet "Liste des échelles".. il y avait un espace genant
idem dans les lignes intitulées N° échelle
 

Pièces jointes

Re : copier/coller des cellules dans un tableau dans une autre feuille sous condition

oui sa fonctionne bien mais le problème est que dans l'état de conformité tout est marquer "VALIDER" alors qu'en réalité dans la première feuille certaine ne le sont pas.

En faite la macro copie la formule et ensuite la formule s'active sur la feuille 4 "liste des échelles".
En réalité ce qu'il faudrait c'est que sa copie simplement ce qu'on voit marquer et non la formule dans la cellule
 
Re : copier/coller des cellules dans un tableau dans une autre feuille sous condition

Ah oui pardon.. j'avais pas vu que c'était une formule..

du coup. j'ai modifié la macro
je ne copie plus les valeurs (type échelle et etat) d'un onglet à l'autre. mais je mets une formule qui va chercher l'info directement à partir du numéro d'échelle.. pourquoi?
parce que je me dis qu'une fois que tu aura dressé la liste des échelles.. avec leur état en retard ou valide.. tu vas peut etre avoir envie de modifier cet état dans le fichier de suivi..
et si j'avais simplement copier coller spécial la valeur.. et bah justement. le changement d'état n'aurait pas été répercuté.
alors qu'avec une formule.... ;-)

voici donc le code

Code:
Sub ListerEchelles()
'effacage des données déjà présentes dans l'onglet "feuille de  contrôle"
Sheets("liste des échelles").Range("A3:D" & Sheets("liste des échelles").Range("A65536").End(xlUp).Offset(1, 0).Row).ClearContents
Application.EnableEvents = False


'Dernière ligne de la feuille "Fichier de suivi"
Fin = Sheets("fichier de suivi").Range("A65536").End(xlUp).Row

ActiveSheet.Outline.ShowLevels RowLevels:=2
'parcours de TOUTES les lignes... très long..


For I = 5 To Fin
    If Rows(I).Hidden = False And Range("A" & I) <> "" Then
        'si c'est un numéro d'échelle
        If IsNumeric(Range("A" & I)) Then
            'recopie du numéro, de son groupe associé, de son type et de sa validité
            Range("A" & I).Copy Destination:=Sheets("liste des échelles").Range("A65536").End(xlUp).Offset(1, 0)
            Sheets("liste des échelles").Range("B65536").End(xlUp).Offset(1, 0) = NomGroupe
        'si ce n'est ni un numéro ni le texte "N° échelle": c'est donc un nom de groupe
        ElseIf (Range("A" & I) <> "N° échelle") Then
            NomGroupe = Range("A" & I)
        End If
    End If
Next I

'application de la formule dans la colonne C et D pour récupérer l'état
formuleC = "=INDEX('fichier de suivi'!B:B;EQUIV(A3;'fichier de suivi'!A:A;0))"
formuleD = "=INDEX('fichier de suivi'!I:I;EQUIV(A3;'fichier de suivi'!A:A;0))"

Sheets("liste des échelles").Activate
Sheets("liste des échelles").Range("C3").FormulaLocal = formuleC
Sheets("liste des échelles").Range("D3").FormulaLocal = formuleD
finzonetri = Range("A65536").End(xlUp).Row
Range("C3:D3").Select
Selection.AutoFill Destination:=Range("C" & 3 & ":D" & finzonetri)


'tri en ordre croissant
 
    Range("A3").Select
    ActiveWorkbook.Worksheets("liste des échelles").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("liste des échelles").Sort.SortFields.Add Key:= _
        Range("A3"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("liste des échelles").Sort
        .SetRange Range("A3:D" & finzonetri)
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Application.EnableEvents = True

End Sub
 
Re : copier/coller des cellules dans un tableau dans une autre feuille sous condition

Je viens de tester la macro mais cela ne fonctionne pas et je ne comprend pas pourquoi. :/

Vous avez modifier le fichier quand vous l'avez écrite ?
 
Re : copier/coller des cellules dans un tableau dans une autre feuille sous condition

Hello

Euh non, ca marche très bien chez moi. pas de modif du fichier, à part celles que j'ai décrites..
attention... au clic, rien ne semble bouger.. et c'est très long (~15s)

pour être sur, je remet le fichier en version 2:
 

Pièces jointes

Re : copier/coller des cellules dans un tableau dans une autre feuille sous condition

Oui c'est bon, dans la version que vous venez de me renvoyer cela fonctionne parfaitement !!! 🙂

A force d'aller voir vos maccro pour mieux les comprendre et assimiler les nouvelles notions j'avais du toucher à quelque chose que je n'aurais pas du ^^

Je vous remerci pour le temps que vous avez passé sur mon fichier. Le résultat est vraiment parfait par rapport à ce que je voulais faire. je vous remerci aussi pour ce que vous m'avez appris grace à nos échange !
 
- 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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…