Retirer une donnes dans un tbleau si elle est dans une autre

Bonjour

je ne savais pas trop comment titrer ma requete

je galere ave un code VBA. bon apres je debute, en autodidacte en piocahnt a droite et a gauche, en essayant de me rappeler de mes modestes connaissances du bon vieux basic du TO7

jai une tableau ''suivi" alimenter par la raquete de 2 tableaux "pre inscription" et adhesions"

le but est que si une personne arive dans adhesion elle soit rajoutée dans ''suivi'' 'ca la requete s'en occuppe"

mais il faudrait qu'elle soit suppriméee de ''pre inscription"

voici le code mais ca ne fonctionne pas. ca fait plus e 3 heures que je suis dessus. et j'avoue que je seche.

Sub MiseAJourAdherents()

    Dim wsPreInscription As Worksheet
    Dim wsAdhesion As Worksheet
    Dim wsSuiviAtelier As Worksheet
    Dim lrPreInscription As Long
    Dim lrAdhesion As Long
    Dim lrSuiviAtelier As Long
    Dim i As Long, j As Long
    Dim nomPreInscrit As String, prenomPreInscrit As String

    ' Définir les feuilles de travail
    Set wsPreInscription = ThisWorkbook.Sheets("Pre-Inscription")
    Set wsAdhesion = ThisWorkbook.Sheets("Adhésions(R)")
    Set wsSuiviAtelier = ThisWorkbook.Sheets("Suivi Ateliers")

    ' Dernière ligne des feuilles concernées
    lrPreInscription = wsPreInscription.Cells(Rows.Count, 1).End(xlUp).Row
    lrAdhesion = wsAdhesion.Cells(Rows.Count, 1).End(xlUp).Row
    lrSuiviAtelier = wsSuiviAtelier.Cells(Rows.Count, 1).End(xlUp).Row

    ' Parcourir la feuille Pre-Inscription
    For i = 2 To lrPreInscription
        nomPreInscrit = wsPreInscription.Cells(i, 7).Value ' Colonne Nom
        prenomPreInscrit = wsPreInscription.Cells(i, 6).Value ' Colonne Prénom

        ' Chercher si le nom est présent dans la feuille Adhésions(R)
        For j = 2 To lrAdhesion
            If wsAdhesion.Cells(j, 8).Value = nomPreInscrit And wsAdhesion.Cells(j, 9).Value = prenomPreInscrit Then
                ' Trouvé dans Adhésions(R) -> Ajouter le numéro d'adhérent au tableau Suivi Ateliers
                lrSuiviAtelier = wsSuiviAtelier.Cells(Rows.Count, 1).End(xlUp).Row + 1
                wsSuiviAtelier.Cells(lrSuiviAtelier, 1).Value = nomPreInscrit ' Nom
                wsSuiviAtelier.Cells(lrSuiviAtelier, 2).Value = prenomPreInscrit ' Prénom
                wsSuiviAtelier.Cells(lrSuiviAtelier, 3).Value = wsAdhesion.Cells(j, 6).Value ' N° Adhésion

                ' Supprimer la ligne de Pre-Inscription (car la personne est maintenant dans Adhésion)
                wsPreInscription.Rows(i).Delete
                lrPreInscription = lrPreInscription - 1
                Exit For
            End If
        Next j
    Next i

    MsgBox "Mise à jour effectuée : Adhérents transférés et Pre-Inscription mise à jour."

End Sub

si une bonne ame peut m'aider, merci d'avance

PS: j'ai mis le fichier anonymiser en PJ

F@b

14adhesions.zip (864.66 Ko)

Bonjour,

A ça c'est sur que ça ne risque pas de marcher. Tes tableaux sont au milieu de la feuille et tu ne programmes que pour les colonnes 1, 2, ou 3 !Donc tu comptes des colonnes vides et tu compares des cellules vides !

A part ça il y a une autre erreur de conception, pour les suppressions on commence par les dernières lignes et on remonte vers la première : Ça évite bien des problèmes. J'ai bien vu que tu essayais de modifier ta variable avec -1 mébon... c'est pas un bon principe. Comme de toute façon tout était à revoir j'ai fait "comme il faut !"

Et puis i y avait aussi un problème du à l'anonymisation aucun préinscrit ne se retrouvait dans les adhésions ! De plus les préinscrit étaient en majuscules, pas les adhérents... Alors j'en ait sélectionnés 3 (en rouge) que j'ai inscrit d'office. Et... sa marche !

J'ai juste remplacé la suppression de ligne par un "X" en première colonne( pour m'éviter de devoir tout rétablir à chaque test) mais tu n'aura qu'à remplacer la ligne par ton

wsPreInscription.Rows(i).Delete

Et ça ne posera pas de pb... (A condition que tes tableaux commencent bien ligne 8 et colonne 6... Hein ! Sinon gare !

Pour le reste je suis resté dans ton style. Ça m'a rappelé des bons souvenirs !

Bon WE

324adhesionsvg.zip (863.27 Ko)

A+

Bonjour

Je l'ai fait... donc je le mets

Salut Galopin

Je part du principe que si le preinscrit et dans la feuille adherent c'est une erreur...

Donc, sinon, de preinscrit il devient adherent et donc dans la feuille atelier...

Tout en tableau structuré...

15adhesions-v1.zip (857.23 Ko)

A+ François

Bonjour à tous,
Je l'ai aussi fait, donc proposition avec des noms de pays/capitales :

13adherents.xlsm (28.90 Ko)

Quelques corrections dans votre code :

- supprimer les .Value
- supprimer le Exit for
- et surtout traiter le pb en deux temps. Votre lrPreInscription = lrPreInscription -1 est à oublier définitivement dans une boucle multiple.

Merci

j'ai reussi enfin, grace a vos infos. bon et vos exemles.

merci

Rechercher des sujets similaires à "retirer donnes tbleau"