Parcourir une colonne A si les mots n’apparaissent pas dans la colonne D, l
Bonjour,
C’EST TRÈS TRÈS URGENT !
Je n’arrive pas à faire la phase 5 et 6 pourriez-vous m’aider ?
Je bloque sur la boucle :
If not .... is nothing then
Car je ne trouve pas l’inverse sachant que que je ne sais pas comment manipuler avec des lettres plutôt que des chiffres.
Merci d’avàce pour votre aide !
(Ce projet doit être rendu le lundi 13)
Bonjour,
Dans les forums d'entraide, ceci n'est pas bien vu : C’EST TRÈS TRÈS URGENT !
Les intervenants étant bénévoles ils n'ont pas à subir de pression !
If not .... is nothing then
Car je ne trouve pas l’inverse sachant que que je ne sais pas comment manipuler avec des lettres plutôt que des chiffres.
l'inverse est : If ... Is Nothing Then
Maintenant, si tu veux de l'aide, tu va faire un effort de bien expliquer ce que tu veux et nous dire où tu en es (montre le code que tu as déjà réalisé) et pas juste nous mettre sous le nez un extrait de ton devoir !
Bonjour Theze,
Merci pour la réponse à ma question.
Mon code pour la réponse 5 où je bloque c'est celui-ci :
Sub Creation_ColonneC()
Dim PlageCol_A As Range
Dim PlageCol_D As Range
Dim CelCol_A As Range
Dim CelCol_D As Range
With Worksheets("Feuil1")
Set PlageCol_A = Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp)) 'on définit l'emplacement de la colonne A
Set PlageCol_D = Range(Cells(1, 4), Cells(Rows.Count, 4).End(xlUp)) 'on définit l'emplacement de la colonne D
End With
For Each CelCol_D In PlageCol_D
Set CelCol_A = PlageCol_A.Find(CelCol_D, , xlValues, xlWhole)
If Not CelCol_A Is Nothing Then
CelCol_D.Offset(0, -1) = CelCol_A
End If
Next CelCol_D
End Sub
Dans mon code ce qui est surligneur en gras ne semble pas fonctionner. Du coup je ne sais pas pourquoi changer en if is nothing then ne débloque pas mon problème.
Toutes mes excuses pour la maladresse "ceci est très urgent" et l'oubli pour mon code.
Merci d'avance !
Lampion.
Donc, tu recherches en colonne A les mots situés en colonne D et si le mot est trouvé, il est inscrit en colonne C en regard de ce dernier ! Ton code fonctionne c'est quoi le problème ?
Tu veux qu'il soit inscrit autre chose si le mot n'est pas trouvé ?
Sub Creation_ColonneC()
Dim PlageCol_A As Range
Dim PlageCol_D As Range
Dim CelCol_A As Range
Dim CelCol_D As Range
'ne pas oublier les points devant les objets pour bien les "parenter" à l'objet "Worksheets()"
With Worksheets("Feuil1")
Set PlageCol_A = .Range(.Cells(1, 1), .Cells(Rows.Count, 1).End(xlUp)) 'on définit l'emplacement de la colonne A
Set PlageCol_D = .Range(.Cells(1, 4), .Cells(Rows.Count, 4).End(xlUp)) 'on définit l'emplacement de la colonne D
End With
For Each CelCol_D In PlageCol_D
Set CelCol_A = PlageCol_A.Find(CelCol_D.Value, , xlValues, xlWhole)
If Not CelCol_A Is Nothing Then CelCol_D.Offset(0, -1).Value = CelCol_A.Value Else CelCol_D.Offset(0, -1).Value = "Pas trouvé !"
End If
Next CelCol_D
End Sub
Tu veux continuer la recherche de ce mot dans le cas où il apparaît plusieurs fois dans la colonne A ?
Sub Creation_ColonneC()
Dim PlageCol_A As Range
Dim PlageCol_D As Range
Dim CelCol_A As Range
Dim CelCol_D As Range
Dim Adr As String
Dim Total As Integer
With Worksheets("Feuil1")
Set PlageCol_A = .Range(.Cells(1, 1), .Cells(Rows.Count, 1).End(xlUp)) 'on définit l'emplacement de la colonne A
Set PlageCol_D = .Range(.Cells(1, 4), .Cells(Rows.Count, 4).End(xlUp)) 'on définit l'emplacement de la colonne D
End With
For Each CelCol_D In PlageCol_D
Set CelCol_A = PlageCol_A.Find(CelCol_D.Value, , xlValues, xlWhole)
If Not CelCol_A Is Nothing Then
'mémorise l'adresse de la cellule afin de sortir de la boucle
Adr = CelCol_A.Address
Do
'inscrit la valeur en colonne C
CelCol_D.Offset(0, -1).Value = CelCol_A.Value
'incrémente
Total = Total + 1
'continue la recherche
Set CelCol_A = PlageCol_A.FindNext(CelCol_A)
'inscrit entre parenthèses le nombre de fois que le mot est trouvé en colonne A
CelCol_D.Offset(0, -1).Value = CelCol_D.Offset(0, -1).Value & " (" & Total & ")"
Loop While CelCol_A.Address <> Adr
Total = 0
End If
Next CelCol_D
End Sub
Hey c'est encore moi. Merci pour la réactivité !
En fait ce que je cherche c’est insérer dans une colonne C les mots de la colonne A qui n’appartient pas à la colonne D.
Alors, inverses les plages :
Sub Creation_ColonneC()
Dim PlageCol_A As Range
Dim PlageCol_D As Range
Dim CelCol_A As Range
Dim CelCol_D As Range
'ne pas oublier les points devant les objets pour bien les parenter à l'objet "Worksheets()"
With Worksheets("Feuil1")
Set PlageCol_A = .Range(.Cells(1, 1), .Cells(Rows.Count, 1).End(xlUp)) 'on définit l'emplacement de la colonne A
Set PlageCol_D = .Range(.Cells(1, 4), .Cells(Rows.Count, 4).End(xlUp)) 'on définit l'emplacement de la colonne D
End With
For Each CelCol_A In PlageCol_A
Set CelCol_D = PlageCol_D.Find(CelCol_A.Value, , xlValues, xlWhole)
If CelCol_D Is Nothing Then CelCol_A.Offset(0, 2).Value = CelCol_A.Value
Next CelCol_A
End Sub
Merci pour la réponse, ça marche toujours pas c'est très étrange.
Je ne sais pas si on se comprend bien, je te poste un classeur exemple où les mots de la colonne A qui ne se trouvent pas en colonne D seront inscrits dans la colonne C :
Merci beaucoup pour ton aide.
Je suis vraiment débutant, alors je vais essayer de copier coller ton code.
Mais il est possible aussi que j'ai mal importé mes documents word dans le fichier Excel. Je suis sous mac Excel 2016 et j'ai posté un autre sujet pour y remédier !
Bonjour,
Je n'ai pas de Mac donc je ne connais pas les particularités de VBA pour Mac !