Copie celluleS sous conditionS d'une feuille à l'autre

Bonjour à tous,

Une copie sous condition en VBA, très originale, mais il y a tant de variables et de problèmes différents que je n'ai pas trouvé ma solution.

Ce que je cherche à faire :

pour chaque ligne de la feuille 1

si (condition 1) colonne B ="" et (condition 2) colonne C = "" et (condition 3) colonne D <> "" alors copier cellules de F à M

puis coller les cellules en feuille2 à un endroit bien précis (pour cela j'ai nommé certaine cellule, donc l'idée après c'est de copier comme manuellement en sélectionnant la cellule nommée, clic droit > insérer les cellules copiées > décaler les cellules vers le bas)

pour l'instant j'en suis là:

Sub transfert11()

Dim i As Long

For i = 3 To 500

If Range("B" & i) = "1. Maîtrise d'ouvrage déléguée" And Range("E" & i) = "x" Then Range("F" & i & ":M" & i).Copy

Next i

mais pour la copie je ne doit pas avoir la bonne syntaxe, j'en ai essayé une bonne 20taine, rien à faire.

Je vous mets un fichier exemple pour être claire au cas où...

Le but de l'opération est en fait que j'ai une feuille où sont répertoriés des intervenants (1000 en 7 catégories), sur cette feuille on peut sélectionner les intervenants (en colonne D) et ainsi générer sur une feuille2 type avoir une liste des intervenants pour un projet donné rangés par catégorie.

Merci pour toutes votre aide.

iArmeek

54iarmeek.xlsm (80.37 Ko)

Bonsoir,

j'ai repris ton code.

ça a l'air de tourner chez moi comme ça :

Sub transfert01()
Sheets("INTERVENANTS").Select
Dim i As Long
For i = 3 To 50
    If Range("B" & i).Value = "1. Maîtrise d'ouvrage déléguée" And Range("D" & i).Value = "X" Then
        Range("F" & i & ":M" & i).Copy
        Sheets("TABLEAU DES INTERVENANTS").Select
        Range("MOD").Select
        Selection.Insert Shift:=xlDown
        Sheets("INTERVENANTS").Select
    End If

    Next i
End Sub

Tu avais un petit x dans "x" et tu ne revenais pas dans ta page de base pour faire dérouler les i, donc peu de risque de retomber sur une ligne qui correspond ^^

J'espère que ça te permettra de poursuivre.

Cdlt,

Bonjour,

Un point de départ :

Sub Galopin()
Dim i%, Tablo, cible$
Application.ScreenUpdating = False
Tablo = Split("MOD MO MOE BUC SPS EXP ENT")
With Sheets("INTERVENANTS")
    For i = 3 To 50
    cible = Tablo(CInt(Left(.Range("B" & i), 1)) - 1)
        If .Range("D" & i) = "X" Then
          .Range("F" & i & ":M" & i).Copy
          Sheets("TABLEAU DES INTERVENANTS").Range(cible).Insert Shift:=xlDown
          Sheets("TABLEAU DES INTERVENANTS").Range(cible).Offset(-1).PasteSpecial Paste:=xlPasteValues
        End If
    Next
End With
End Sub

Attention ! Les lignes bleues ou gris/marron ne doivent pas être cochées !

A+

Plop, Galopin01,

Merci à tous les deux, avec les deux rapides essais ce matin -journée speed- les deux fonctionnent parfaitement.

ça fait une petit moment que je n'avais pas fait de VBA, je dois effectivement revoir les essentiels, merci Plop.

Galopin, c'est du grand art, je vais essayer de comprendre ta macro, car bien jouer, j'espère que je pourrais te poser quelques questions.

Il me reste plus qu'à nettoyer le fichier avant sa fermeture.

Introduire un simple "ne pas enregistrer" dans la macro "éditer" qui fera le transfert et copie de la feuille dans un autre classeur

Mais je crois que je préfèrerais une macro dans "rétablir" qui efface les lignes copiées, je vais me pencher maintenant là dessus ; en nommant d'autres cellules peut-être, et écrire une commande qui supprime toutes les lignes entre deux cellules nommées, une piste.

Merci encore

Je mettrais le fichier peaufiné dans quelques jours, pour tous ceux qui se balade comme moi et apprend grâce à vos réponse.

enjoy:)

108iarmeek9.xlsm (72.85 Ko)
Rechercher des sujets similaires à "copie conditions feuille"