Macro enregistrer ligne si un mot est présent dans une colonne

8classeur2.xlsm (214.46 Ko)

Bonjour,

Je bidouille un peu sur Excel, mais pas suffisamment pour créer la Macro dont j'ai besoin.

J'ai donc encore besoin de votre aide avec un pas à pas car il est fort possible que je sois obligée de modifier cette macro par la suite si on me rajoute des villes...

Je suis sur ce planning depuis mai et j'avance mais pour finaliser le projet il me faudrait une dernière macro. En consultant mon fichier joint vous verrez qu'il y a déjà une macro EnregistrerPLANNING. Dans la première version de mon planning, elle me servait à enregistrer la première ligne de TabPLANNING dans "TabISSIN" . Désormais, je souhaiterais que ce soit la ligne de la cellule active de TabPLANNING qui s'enregistre dans TabISSIN et je souhaite également ajouter une condition : si dans la colonne B de TabPlanning on retrouve le nom d'une des autres feuilles du classeur (ex: CERGY), les colonnes A à H de la ligne sélectionnée doivent s'enregistrer dans les colonnes A à H de la première ligne de TabPARIS.

Par ailleurs, j'ai l'impression qu'il y a un problème dans mon classeur : quand je vais dans le gestionnaire de noms, je vois des noms qui sont grisés, dont le nom TabPLANNING. On ne peut pas les supprimer. C'est bizarre, non ? Il faut savoir que ce classeur est relié à un autre classeur dans lequel on trouve un formulaire. Est-ce que ça viendrait de cette liaison ?

Salut à tous !

Toujours pas de réponse mais j'avance tant bien que mal de mon côté...

1/ J'ai résolu le problème de sélection de la ligne de la cellule active.

2/ Il me reste à ajouter une condition : Je voudrais que la ligne soit copiée dans Feuil10 seulement si "MANTESLAJOLIE" est écrit dans la colonne 2 de la ligne active.

3/ Je voudrais faire ça avec toutes les villes. À votre avis, à partie de combien de villes ça va devenir trop lourd à gérer pour Excel ?

Merci de votre aide

With Feuil13.ListObjects("TabPLANNING16") 'feuille Issin
    If .ListRows.Count = 0 Then
        .ListRows.Add: lig = 1
    'Else: .ListRows.Add: lig = .ListRows.Count 'insérer à la dernière ligne
    Else: .ListRows.Add Position:=1: lig = 1 'insérer a la 1igne 1
    End If

    For col = 1 To 11
        .DataBodyRange.Item(lig, col) = Feuil12.Cells(ActiveCell.Row, col)
    Next col
End With

With Feuil10.ListObjects("Tableau212") 'feuille Mantes
If .ListRows.Count = 0 Then
        .ListRows.Add: lig = 1
    'Else: .ListRows.Add: lig = .ListRows.Count 'insérer à la dernière ligne
    Else: .ListRows.Add Position:=1: lig = 1 'insérer a la 1igne 1
    End If

    For col = 1 To 8
        .DataBodyRange.Item(lig, col) = Feuil12.Cells(ActiveCell.Row, col)
    Next col
End With

With Feuil12.ListObjects("TabPLANNING")
    Rows(ActiveCell.Row).Delete
End With

Sheets("ISSIN").Select
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    Sheets("PLANNING").Select

End Sub

Bonsoir Cynthia75,

Apparemment ce serait sur ces lignes que la condition en colonne 2 s'appliquerait.

For col = 1 To 8
        .DataBodyRange.Item(lig, col) = Feuil12.Cells(ActiveCell.Row, col)
    Next col

Donc,

For col = 1 To 8
 if Feuil12.Cells(ActiveCell.Row, 2)="MANTESLAJOLIE"  then .DataBodyRange.Item(lig, col) = Feuil12.Cells(ActiveCell.Row, col)
    Next col

Merci ! Ça fonctionne à merveille !

Et pour ma dernière question, tu as une idée ? Si je fais ça pour une dizaine de villes, Excel fonctionnera toujours aussi bien ou ça va ramer et je risque des erreurs ?

Rechercher des sujets similaires à "macro enregistrer ligne mot present colonne"