Excel probleme avec programmation VBA

Bonsoir,

Je fais face à un blocage sur excel et je vous sollicite afin de me dépanner. Je dispose d'un fichier excel composé d'une 50e de ligne dont je souhaiterais effectuer une macro vba constitué d'une commande conditionnel sur l'une des colonnes de mon tableau (exemple sur la colonne E du fichier que je vais essayer de mettre en pièce jointe).
Mon objectif : SI le texte dans la colonne E = A ALORS copier la ligne entière et me l'inclure dans la feuil1 SINON ne pas l'inclure dans la feuil1.

Par contre celà ne marche pas dans mon cas (sur la feuil 1 figure uniquement la colonne E et pas les lignes dont le fournisseur est A + en prime un message d'erreur est affiché). Ci-dessous ma macro modifiée:

Sub test()

Dim cel As Range
Dim source As Range
Dim destination As Range

Worksheets("feuil1").UsedRange.Clear
Set destination = Worksheets("feuil1").Range("B3")
Sheets("TOUS").Range("E6:E96").Copy destination
Set destination = destination.Offset(1, 0)

With Sheets("TOUS")
For Each cel In .Range("g3:g" & .Range("g" & .Rows.Count).End(xlUp).Row)
If cel.MergeCells Then
If source Is Nothing Then
Set source = cel.MergeArea.EntireRow
Else
Set source = Union(source, cel.MergeArea.EntireRow)
End If
ElseIf cel.Value = "A" Then
If source Is Nothing Then
Set source = cel.EntireRow
Else
Set source = Union(source, cel.EntireRow)
End If

End If

Next

End With

source.Copy destination
Worksheets("TOUS").Activate
Worksheets("TOUS").Range("A1").Select
End Sub

Merci infiniment pour votre aide

Salut,

Sans fichier, compliqué de connaître tes contraintes. Dans ce cadre, une version beaucoup plus alegée et économe:

Sub test()
Worksheets("Feuil1").Cells.ClearContents
With Worksheets("TOUS").UsedRange
    .AutoFilter Field:=5, Criteria1:="A"
    .Copy destination:=Worksheets("Feuil1").Range("B3")
End With
End Sub

Bonne soirée.

Bonsoir, comment puis-je vous faire part d'un fichier?

fichier

Ci-joint.

7test.xlsm (16.35 Ko)

je viens de tester votre macro, celà marche à la perfection. Merci infiniment!

Bonsoir,

Si la base de donnée de l'onglet tous reste en l'état, pas de cellules fusionnées par exemple, ça devrait faire l'affaire.

Bonne soirée.

et si on rajoute des lignes supplémentaires à l'onglet TOUS, la macro fait-elle toujours le job sur les lignes supplémentaires?

J'aimerais comprendre la macro que vous m'avez donné, vous serait-il possible de me décrire chaque ligne avec l'effet recherché svp?

Dernière question, comment faites-vous pour copier les lignes et non les commandes? Car je ne vois pas de commandes spécifiques à cet effet

en vous remerciant encore une fois

Bonjour

Ci-contre les commentaires. Peut importe le nombre de ligne le code s'appliquera toujours.

Sub test()
'Nettoie toutes les données de la feuille 1
Worksheets("Feuil1").Cells.ClearContents
'Avec les données de la feuille TOUS
With Worksheets("TOUS").UsedRange
'Applique un filtre sur la 5ème colonne, et cherche la valeur A
    .AutoFilter Field:=5, Criteria1:="A"
'Copie le résultat et le colle à partir de la cellule B3 de la feuille 1
    .Copy destination:=Worksheets("Feuil1").Range("B3")
End With
End Sub

Bonne soirée.

Je vous remercie pour votre aide. Petite complexité en plus, je souhaiterais disposer chaque fournisseur sur uen nouvelle feuille. Exemple fournisseur A sur feuil1, fournisseur B sur feuil2etc... Comment sera géré ce point? Pourriez-vous SVP me faire une démo sur le code VBA cité plus haut (avec explication du code si possible)?En vous remerciant par avance

Bonjour,

Est-il possible de me fournir un fichier type car la colonne E contient des fournisseurs numériques et j'ai peur que ce soit en réalité la colonne D.
Combien est-il possible d'avoir de fournisseurs différents ? Est-il possible des les connaître à l'avance ? D'autres peuvent-ils se rajouter ?

Par avance merci.

Bonne soirée.

bonjour,

en effet je parle des fournisseurs de la colonne D. Les fournisseurs dans le fichier exemple sont édités sous forme de lettres (A,B,C). Je souhaiterais automatiquement grâce aux code VBA, que toutes les lignes contenant le fournisseur A, soient copiées et collées dans la feuil1, les lignes contenant le fournisseur B soient copié et collé dans la feuil2. Etc...

vous pouvez prendre exemple sur le fichier joint plus haut dans la conversation.

en vous remerciant infiniment.

Bonjour,

Ci-joint avec la liste de tout tes fournisseurs en feuille PARAM. Attention il te faudra une feuille par fournisseur (non créée en automatique pour l'instant comme je ne sais pas combien tu en as).

Bonne soirée

2four.xlsm (22.96 Ko)
Rechercher des sujets similaires à "probleme programmation vba"