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 Subsi une bonne ame peut m'aider, merci d'avance
PS: j'ai mis le fichier anonymiser en PJ
F@b
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).DeleteEt ç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
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é...
A+ François
Bonjour à tous,
Je l'ai aussi fait, donc proposition avec des noms de pays/capitales :
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