Copier coller une 2 colonne d'un classeur vers un autre sous conditions
Salut à tous !
J'ai besoin de votre aide pour le problème suivant. J'ai deux classeurs. Le premier classeur sert à alimenter le deuxième pour les numéros de factures cependant il ne doit alimenter que les lignes correspondants au bon numéro de facture sur le deuxième classeur. Les colonnes à alimenter sont les colonnes N et O du classeur A vers le classeur B uniquement si les colonnes E, F, G,H,I,J,K,P correspondent sur les 2 classeurs.
Je vous met les fichiers en pièce jointe.
Merci de votre aide et je m'excuse par avance de mon manque de connaissance.
Après quelques recherches j'ai fais un concatener des cellules dont je veux que les conditions soient respectées mais je suis bloqué actuellement sur ce code pouvez vous m'aidez ?
Sub Macro1()
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim LR As Integer 'déclare la variable LR (Ligne de Référence)
Set CS = navette - Mac - 2 'définit le classeur source CS
Set OS = CS.Worksheets("Navette") 'définit l'onglet source OS)
TV = OS.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe a la ligne suivante)
Set CD = Workbooks("navette-mac-1.xlsm") 'définit le classeur destination (génère une erreur si le fichier mn'est pas ouvert)
If Err <> 0 Then 'condition : si une erreur a été générée
Err.Clear 'supprime l'erreur
MsgBox "Vous devez ouvrir le classeur navette-mac-2.xlsm !" 'message
Exit Sub 'sort de la procédure
End If 'fin de la condition
On Error GoTo 0 'annule la gestion des erreurs
For S = 1 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
If UCase(TV(S, 19)) = CS.Cells(2, 19) Then 'si la donnée ligne I colonne 15 de TV vaut OK
Set OD = CD.Worksheets(TV(S, 3)) 'définit l'onglet destination OD (donnée ligne I colonne 3 de TV)
LR = OD.Cells(Application.Rows.Count, "N").End(xlUp).Row + 1 'définit la ligne de référence LR de la colonne B de l'onglet OD
OD.Cells(LR, "N").Value = TV(O, 2) 'renvoie dans la cellule ligne LR colonne N de l'onglet OD la donnée en ligne I colonne 4 de TV
End If
Next S 'prochaine ligne de la boucle
End Sub
Finalement je suis arrivé à cela : =SI(S2='[navette-mac-1.xlsm]Accueil'!$S2;'[navette-mac-1.xlsm]Accueil'!$O2;" ") J'aimerais savoir comment l'adapter en langage VBA afin de l'automatiser en cliquant sur un bouton
Bonjour Inconnu95 et
Une petite présentation ICI serait la bienvenue
Je vous invite à lire la charte du forum [A LIRE AVANT DE POSTER] qui vous aidera dans vos demandes et réponses sur ce forum
et notamment :
- Ne postez pas la même question sur un autre forum pour éviter de faire perdre bêtement du temps aux membres sur un problème qui peut être déjà résolu sur l'autre forum. L'inverse est également valable, si vous avez déjà posé votre question sur un autre forum, ne créez pas un doublon sur ce forum (à moins d'avoir clôturé le sujet sur l'autre forum).
A vous de choisir
Merci de votre compréhension et de votre participation
Cordialement
Bonjour,
Regardez cette méthode en vous servant de la fenêtre exécution dans ce message : vba-inserer-une-formule-pour-certaines-cellules
Je clôture ce fil, puisque la réponse est donné sur l'autre
@Inconnu95, attention si vous ne respectez pas la charte de ce forum !