vba : copie de plage aprés conditions

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 !

Radsgort

XLDnaute Nouveau
Bonjour à tous,

Je reviens vers vous car je tourne en rond depuis plusieurs jours, voici mon pb :
Je souhaites :
a) tester l'égalité de la cellule "A2" en (Feuille2) sur "L2" en (Feuille1).
b) si égalité = ok alors copie les cellules B2 : D2 de la feuille2 vers cellules M2:O2 de la feuille1.
je voudrais faire une boucle pour pouvoir tester toutes les valeurs de la feuille2
sur la plage A2:A?.

Voici le code que j'ai commencé
:

Sheets("data2").Select
Range("A1").CurrentRegion.Select ' // Définit la plage active

If Range("A2").Value = Sheets("Data1").Range("L2").Value Then
Sheets("data2").Select
Range("B2 : D2").Select
Selection.Copy
Sheets("data1").Select
Range("M2").Select
ActiveSheet.Paste
End If

j'espère avoir été explicite, dans le doute un petit fichier sera peut-être plus clair que moi.

Je continu mes recherches, je vous remercie par avance du temps que vous passerez sur ce petit cas.
 

Pièces jointes

Dernière édition:
Re : vba : copie de plage aprés conditions

Bonjour,

Tout d'abord bravo c'est exactement cela.🙂🙂
Je lis ton code car je souhaites lui apporter une modification, je viens de revoir l'analyse et la plage de donnée de la feuille2 peut être aléatoire (import de données) pour cette raison je souhaitais détecter avec currentRegion la plage active afin d'éviter un calcul sur 65535 je récupére tout les jours cet import de données.

Je réfléchi à cela en ce moment.

encore une fois un grand merci 🙂pour cette version je vais essayer de comprendre ce code.

A+
 
Re : vba : copie de plage aprés conditions

Bonjour Soenda et bonjour à tous

Je reviens ici car je souhaites modifier le code ci-dessus de soenda "Clas test2" mais j'ai beau le décortiquer le passer au hachoir, je n'obtiens pas satisfaction.

Je souhaites dans un premier temps déplacer juste les coordonnées du tableau de la feuille 2 ( "L1:07") en ("A1😀7") . Je n'y arrive pas
Deuxième étape supprimer la ligne entière sur cette même feuille 2 qui à permis de générer l'égalité autrement dit à chaque égalité trouvé supprimé la ligne source.

Merci par avance à tous
 
Re : vba : copie de plage aprés conditions

Bonjour le fil, Radsgort

Modifie la formule comme suit
Code:
[M2].FormulaR1C1 = _
"=IF(ISNA(MATCH(RC12,Feuil2!R2C[B][COLOR=red]1[/COLOR][/B]:R7C[COLOR=red][B]1[/B][/COLOR],0)),"""",OFFSET(Feuil2!R1C[B][COLOR=red]1[/COLOR][/B],MATCH(RC12,Feuil2!R2C[B][COLOR=red]1[/COLOR][/B]:R7C[B][COLOR=red]1[/COLOR][/B],0),COLUMN()-12))"

C1, car en Feuil2, le tableau se trouve maintenant en Colonne 1 ("A").
Pour le reste, regarderai un peu plus tard.

A plus
 
Dernière édition:
Re : vba : copie de plage aprés conditions

Bonjour le fil, Soenda

Bravo, comment dire excellent, je répond avec un peu de retard car je voulait comprendre et avancer dans mon code avant de te répondre.
Grâce à l'aide que tu m'apportes voila ou se trouve ton code.
Me permet tu de te citer comme références ayant contribuer à l'élaboration de ce code.
Bien sur je signalerai les parties rédiger par tes soins.

Comme je souhaites le faire pour les autres participants.

Vraiment et encore une fois milles merci
Code:
Option Explicit

Sub Egalite_Test()

'// Code rédiger par xxxxxxx    //
'//                                                     //

    Dim plage As Range, S As Range, D As Range
    Dim t(100, 2) As String '// Déclaration de la variable tableau
    Dim L As Integer
    
    For Each D In Feuil2.[L2:L100]
        For Each S In Feuil3.[A2:A100]
            If D.Value = S.Value Then
                S.Value = vbNullString
                L = D.Row - 2
                t(L, 0) = S.Offset(, 1).Value   '// Decalage
                t(L, 1) = S.Offset(, 2).Value
                t(L, 2) = S.Offset(, 3).Value
            End If  '// Fin de la condition Si
    Next S, D   '// Boucle sur les valeurs de variables S & D de la condition "For"
    
    Feuil3.[A2:A100].SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    Feuil2.[M2:O100] = t
    
'// Fin de code rédiger par xxxxxxxx //

Columns("N:N").Select   '// Selection de la colonne
Selection.NumberFormat = "General"  '// Definition du format de cellule "Standart"

Range("L1").Select  '// Position du curseur

Call Copie  '// Appel de l'instruction "Copie"
End Sub

Sub Copie()
Dim Cell As Range   '// declaration du type de variable
Sheets("Feuil2").Select  '// Onglet de travail "Feuil2"
For Each Cell In Range("M2:O100")   '// Boucle de test des cellules sur la plage ("O2:O100")
   If Cell <> "" Then   '// Detection du contenue des cellules "Différent  de vide"
        Cell.EntireRow.Copy Destination:=Sheets("Archive").Range("A" & Sheets("Archive").Range("A65536").End(xlUp).Row + 1) '// Copie la ligne versl'onglet "Archive" sur la premiére ligne vide.
        Cell.EntireRow.Delete   '// Supprime la ligne
    End If
Next
'Call Test
End Sub
 
Dernière édition:
- 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

Discussions similaires

Réponses
10
Affichages
547
  • Question Question
Microsoft 365 Code VBA
Réponses
10
Affichages
861
  • Question Question
Microsoft 365 Erreur de format
Réponses
5
Affichages
491
Réponses
7
Affichages
620
Retour