Copier les valeurs d'une colonne si même numéro de compte trouvé

Fermé
antho1703 - 13 juin 2013 à 10:51
 antho1703 - 17 juin 2013 à 11:29
Bonjour,

Je suis un tout nouveau qui commence le VBA depuis moins d'une semaine.
J'ai épluché le livre de Dominique Maniez pour Office 2010-2013 mais je reste bloqué sur quelque chose je pense de très facile à réaliser. J'ai actuellement un petit travail à régler avant le 19 Juin au soir.

Mon contexte :
J'ai un fichier excel avec deux feuilles "tableau de bord" et "synthese"

Dans la première feuille j'ai en colonne "A" plein de numéro de compte comptable et en colonne "G" des montants (négatifs et positifs)
Le premier numéro apparait en A2 et le montant en G2
Sur la deuxième feuille "synthèse" j'ai un tableau récapitulatif avec en colonne A les numéros de comptes en colonne K la colonne montant vide.
Le premier numéro est en A6 jusqu'a A1014 et les montants suivent en K6 à K1014

Finalité recherchée :
Certains numéros de comptes ne sont pas dans la feuille synthèse
Et vice versa dans l'autre sens.

J'aimerais que ma macro compare la colonne A de ma feuille "tableau de bord" et la colonne A de ma feuille "synthese"
Si un numéro de compte est trouvé dans les deux colonnes alors il transmet la valeur du montant de la feuille "tableau de bord" vers la colonne montant de ma feuille "synthese".

Le petit plus que j'aimerais faire serait que tous les numéros de comptes non trouvés dans la comparaison, leurs lignes soit masquées. Mais que si elles soient rajouté plus tard qu'elles ré-aparaissent avec le montant. Ainsi que masquez les doublons dans le tableau synthèse.

La ou je suis totalement dépassé c'est que j'arrive pas à commencer mon code par le bon bout. En plus étant débutant et prenant totalement du début l'apprentissage comprenez que c'est parfois déroutant.

J'aimerais un code très simple pour que je puisse le comprendre facilement et le modifier si besoin...

J'ai déjà lu pas mal de sujet et je sais l'attention que vous prenez tous à ce genre de demande, je vous remercie déjà de l'attention que vous allez y apporter..

A bientot
Anthony

A voir également:

2 réponses

Stellou la rebelle Messages postés 20 Date d'inscription vendredi 14 juin 2013 Statut Membre Dernière intervention 23 juillet 2013
17 juin 2013 à 10:54
Bonjour,
je te propose ces lignes de codes, j'espère qu'elles marcheront. Juste tu risque d'avoir un problème avec tailletableaubord, car via ce que j'ai compris, tu ne l'as connait pas. Il te faudra surement utiliser une fonction tel que worksheetfunction.counta([collone]).

Dim tailletableaubord

For i=2 to tailletableaubord

For j=6 to 1014

If Sheets("tableau de bord").Range("A"& i)=Sheets("synthèse").Range("A"&j) then

Sheets("synthèse").Range("K"&j) = Sheets("tableau de bord").Range("G"& i)
End If

Next

Next

J'espère que cela t'aidera
A plus
0
Merci pour ta réponse Stellou ! Je vais voir si ton code peut s'adapter a mon problème :)

J'ai continuer de bosser dessus en parallèle et j'ai écris le code ci dessous, je suis plus très loin de mon objectif mais il ne veut pas rentrer dans ma deuxième boucle donc donnee2 ne prend pas de valeur. j'ai l'impression que mon "For Nolig2 = 2 To F1.Range("A65535").End(xlUp).Row" pose un problème car le End(xlUp).Row reste a 1 alors qu'il devrait etre a beaucoup plus..

Quelqu'un a une idée ?

Sub Comparaison()
Dim F1 As Worksheet
Dim F2 As Worksheet
Dim Donnee As String, donnee2 As String

Set F1 = Worksheets("bal Lagord 31.03.13") 'Le fichier source
Set F2 = Worksheets("synthese") 'Le fichier destinataire

For Nolig = 6 To F2.Range("A65535").End(xlUp).Row 'Plage source
Donnee = F2.Cells(Nolig, 1).Value ' variable a comparer
For Nolig2 = 2 To F1.Range("A65535").End(xlUp).Row
donnee2 = F1.Cells(Nolig2, 1).Value
If Donnee = donnee2 Then 'si indice n'est pas différent
'on attribue la valeur
F1.Cells(Nolig2, 7) = F2.Cells(Nolig, 11) 'et on transfère
Else 'sinon
F2.Cells(Nolig, 11) = "0" 'on met 0
End If
'Set ind = Nothing

'End With
'End With
Next Nolig2
Next Nolig
' erreur dans la boucle for ne rentre pas dans 'lautre
End Sub
0