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

copie de ligne avec condition

  • Initiateur de la discussion Initiateur de la discussion denisbouchard
  • Date de début Date de début

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 !

D

denisbouchard

Guest
Bonjour a tout le forum,
Dans un tableau, je voudrais copier la ligne seulement si un "x" est mis dans la colonne D, mais le programme que j'ai fait me copie toutes les lignes. Quelqu'un peut-il m'expliquer mon erreur, et je voudrais le modifier pour qu'il y ai 2 conditions, une croix dans la colonne "D" et le chiffre "100" dans la colonne "C".
Merci beaucoup pour vôtre aide.
Cordialement
denis
 

Pièces jointes

Re : copie de ligne avec condition

Bonjour denisbouchard,

Voici un code qui fonctionne. les erreurs que j'ai trouvé sont : pas de réinitialisation de la variable "plage", erreurs sur les i et j dans le "set plage =".

VB:
Sub testcopieur()
    i = Range("A65536").End(xlUp).Row
    Set plage = Nothing
    For Each c In Feuil1.Range("d1:d" & i)
        If c = "x" And c.Offset(0, -1) = 100 Then
            j = c.Row
            If plage Is Nothing Then
                Set plage = Feuil1.Range(Cells(j, 1), Cells(j, 4))
            Else
                Set plage = Union(plage, Feuil1.Range(Cells(j, 1), Cells(j, 4)))
            End If
        End If
    Next c
    plage.Copy Destination:=Feuil2.Range("a1")
End Sub

A+
 
Re : copie de ligne avec condition

rebonjour à tous,
Je reviens vers vous car sur ce petit programme et après modifiaction, suivant les conseilles de Fred0o, j'ai 2 cas ou ça ne fonctionne pas:
- 1er cas : aucune croix dans la colone D
- 2 ème cas: une croix dans la colonne D mais le chiffre de la colonne C n'est pas 100.
je pensais que les lignes suivantes réglaient le problème.
If plage Is Nothing Then
Set plage = Feuil1.Range(Cells(j, 1), Cells(j, 4))

Pouvez vous m'expliquer pourquoi ça ne marche pas et me dire comment regler ce problème?
Merci pour vos réponses
denis
 

Pièces jointes

Re : copie de ligne avec condition

Bonsoir Denis

Voici la macro corrigée :
VB:
Sub testcopieur()
    i = Range("A65536").End(xlUp).Row
    Set plage = Nothing
    For Each c In Feuil1.Range("d1:d" & i)
        If LCase(c) = "x" And c.Offset(0, -1) = 100 Then
            j = c.Row
            If plage Is Nothing Then
                Set plage = Feuil1.Range(Cells(j, 1), Cells(j, 4))
            Else
                Set plage = Union(plage, Feuil1.Range(Cells(j, 1), Cells(j, 4)))
            End If
        End If
    Next c
    If Not plage Is Nothing Then plage.Copy Destination:=Feuil2.Range("a1")
End Sub

En fait, dans les 2 cas que tu cites, on a une plage = Nothing puisqu'elle ne contient aucun élément. Dans ce cas, on ne peut pas la copier, sinon ça provoque une erreur.
Pour pallier à ceci, on teste si la plage = Nothing avant de la copier.

A+
 
Re : copie de ligne avec condition

Bonjour et encore une fois merci Fred0o,
Une dernière question:
Pourquoi on ne met pas de "End If" après un "If Not ... Then"?
Denis
 
Dernière modification par un modérateur:
Re : copie de ligne avec condition

Bonjour Denis

Pour la syntaxe de If ... Then ... Else, si il n'ya qu'une seule instruction après le If, on peut l'écrire sur la même ligne et sans End If comme ceci :
VB:
If Ceci = Cela Then Instruction_Unique Else Autre_Instruction_Unique
A noter que le Else n'et pas obligatoire.

Par contre, si il y a plusieurs instructions après le If ou après le Else, il faut utiliser la forme traditionnelle comme ceci :
VB:
If Ceci = Cela Then
    Première_Instruction
    Deuxième instruction
Else
    Troisième_Instruction
End If

L'utilisation sur 1 seule ligne quand cela est possible permet de simplifier la lecture du code.

A+
 
Re : copie de ligne avec condition

Re Fred0o,
Merci pour cette info, je pensais que end if etait nécessaire même avec un seule condition et une seule ligne.
A+
denis
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
19
Affichages
708
  • Question Question
Microsoft 365 couleur et ligne
Réponses
6
Affichages
294
Réponses
18
Affichages
652
Réponses
5
Affichages
372
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…