Copier Coller des lignes entre les feuilles (Excel 2010)

Fermé
Batou021 - 2 août 2016 à 15:06
 Batou021 - 4 août 2016 à 16:36
Bonjour à tous et à toutes,

J'ai cherché pendant pas mal de temps comment réaliser cette macro et je n'ai pas résolu le problème malgré les nombreux forums dessus.

Les dossiers partagés sur CCM ne sont plus consultables et je n'ai pas les compétences suffisantes en excel pour le faire seul. (Et je n'ai surtout pas le temps de les acquérir )

Je vous explique mon problème, j'ai une liste de client sous format excel. Chaque client représente une ligne.
Les colonnes représente des caractéristiques du client (Nom, Prénom, société...)

La colonne Q correspond à la question "Travaillez vous avec le Service n°1"
La colonne R correspond à la question "Travaillez vous avec le Service n°2"
...

Les possibilités de réponses à ces deux questions sont "Checked" et "Unchecked"

J'aimerai savoir comment copier la ligne du client lorsque celui-ci répond "Checked" à la colonne Q et le coller dans la feuille "Service n°1"

De plus il faudrait qu'aucune ligne ne soit vide lors des copies sur les feuille "Service 1", "Service 2"...

Merci d'avance pour votre aide qui me sera précieuse.

A voir également:

1 réponse

Fahora Messages postés 814 Date d'inscription jeudi 24 septembre 2015 Statut Membre Dernière intervention 2 janvier 2023 68
Modifié par Fahora le 2/08/2016 à 15:29
Bonjour ,

Ravi de voir un post aussi clair que le tien. Ça donne envie !

Sub CreerFeuilles()
Dim Cel As Range

    Application.ScreenUpdating = False
    
        For Each Cel In .Range("Q2:Q" & .Range("Q" & Rows.Count).End(xlUp).Row)
            If Cel.Value = "Checked" Then
               Cel.EntireRow.Copy Sheets("Service n°1").Range("A" & Rows.Count).End(xlUp).Offset(1)
            End If
        Next Cel

    
    Application.ScreenUpdating = True
    MsgBox "Traitement terminé"
End Sub


Voilà un premier départ pour le service n°1 (colonne Q) , il faudra en faire autant pour la colonne R , si ca te convient.

Cordialement,
Nos seules limites sont celles que nous nous imposons nous-même.
La politesse et un merci ne tuent pas. Il existe un bouton pour "Résolu" pour confirmer que     votre problème n'en est plus un. Fahora
1
Merci pour votre enthousiasme et pour la rapidité de cette réponse !


J'ai encore un souci de novice je ne peux utiliser la référence de la macro, j'arrive à la créer mais il ne l'a trouve pas.


De plus si je peux me permettre d'user votre temps pourriez vous m'expliquer les fonctions des différentes lignes dans votre programme.
0
Fahora Messages postés 814 Date d'inscription jeudi 24 septembre 2015 Statut Membre Dernière intervention 2 janvier 2023 68
Modifié par Fahora le 3/08/2016 à 08:44
Dans VBA , met cette macro dans un module (à créer certainement) de ton fichier.

Tu peux ensuite créer un bouton pour inserer la macro dans ton fichier. Et en cliquant sur ce bouton, elle se deroulera. Ou alors , tu peux simplement utiliser dans le ruban développeur , l'objet "Macros" , sélectionner et éxecuter la macro.

Ligne par ligne , c'est assez délicat , mais ce n'est pas bien compliqué.

Sub CreerFeuilles()
Dim Cel As Range

    Application.ScreenUpdating = False 'Enleve les vérifications d'excel pour le bon déroulement de la macro
    
        For Each Cel In .Range("Q2:Q" & .Range("Q" & Rows.Count).End(xlUp).Row)
'Pour chaque cellule dans la colonne Q , à partir de la cellule Q2
            If Cel.Value = "Checked" Then
'Si la valeur de la cellule est "Checked" , alors
               Cel.EntireRow.Copy Sheets("Service n°1").Range("A" & Rows.Count).End(xlUp).Offset(1)
'Je copie toute la ligne de la cellule et je la met à la première ligne où il n'y a rien dans l onglet "Service n°1"
            End If
'fin de la condition
        Next Cel
'Cellule suivante 
    
    Application.ScreenUpdating = True
'Remet les vérifications
    MsgBox "Traitement terminé"
End Sub


0
Batou021 > Fahora Messages postés 814 Date d'inscription jeudi 24 septembre 2015 Statut Membre Dernière intervention 2 janvier 2023
4 août 2016 à 14:39
Bonjour à tous,

J'ai un dernier problème si tu peux encore m'aider, je n'arrive pas à copier la ligne entière mais seulement de la première cellule à celle qui me sert pour le tri.
Merci d'avance

Le bout de programme correspondant :



Nb_Lignes_Télémaintenance_Prédictive = Sheets("PageTélémaintenance_Prédictive").Cells(Rows.Count, 1).End(xlUp).Row + 1

Set colonne_selection_O = .Range("O2:O" & .Range("O" & Rows.Count).End(xlUp).Row)

For Each cellule In colonne_selection_O

Select Case cellule.Text
Case "Checked"

.Range(cellule, .Cells(cellule.Row, 1)).Copy Destination:=Worksheets("PageTélémaintenance_Prédictive").Cells(Nb_Lignes_Télémaintenance_Prédictive, 1)

Nb_Lignes_Télémaintenance_Prédictive = Nb_Lignes_Télémaintenance_Prédictive + 1

'[etc..]
Case Else ' Autres valeurs.
'Non géré
End Select

Next
End With

Application.ScreenUpdating = True
0
Fahora Messages postés 814 Date d'inscription jeudi 24 septembre 2015 Statut Membre Dernière intervention 2 janvier 2023 68
4 août 2016 à 15:04
Ce qui veut dire que la macro marchait ?
0
Avec votre programme j'avais toujours le même problème de référence. J'ai préféré me débrouiller par moi même plutôt que de vous monopoliser plus de temps.

En bidouillant et en apprenant les bases du programme j'ai pondu la macro précédente. Mais comme je vous l'ai dit je n'ai toujours pas réussi...
0