Contrôle et déplacement de lignes

koewin

XLDnaute Nouveau
Bonjour,

je joins un fichier excel d'exemple pour ma question.

Je dois intégrer des adresses dans un programme utilisé par ma société. Nous recevons de nos clients des fichiers excel.

L'importation dans nos programmes demande que les champs "nom" et "adresse" ne soient pas plus grand que 30 caractères.

Est-il possible de faire un bouton ou une macro sur la feuille fichier client qui teste les colonnes "nom" et "adresse" et ensuite :
- copie les adresses intégrables directement dans la feuille "adresses intégrables"
- copie les adresses à modifier dans la feuille "adresses rejetées" (car le "nom" et/ou l'"adresse" dépasse 30 caractères).

Merci.

koewin
 

Fichiers joints

Minick

XLDnaute Impliqué
Re : Contrôle et déplacement de lignes

Salut,

Comme ceci par exemple :

Code:
Option Explicit

Sub TestNomAdresse()
    Dim Cpt As Integer
    Dim ShtClient As Worksheet, ShtOk As Worksheet, ShtRejet As Worksheet
    
    Set ShtClient = ThisWorkbook.Sheets("fichier client")
    Set ShtOk = ThisWorkbook.Sheets("adresses intégrables")
    Set ShtRejet = ThisWorkbook.Sheets("adresses rejetées")
    
    ShtOk.Cells.Clear
    ShtClient.Rows(1).Copy Destination:=ShtOk.Rows(1)
    ShtRejet.Cells.Clear
    ShtClient.Rows(1).Copy Destination:=ShtRejet.Rows(1)
    
    For Cpt = 2 To ShtClient.Range("A65536").End(xlUp).Row
        If Len(ShtClient.Range("B" & Cpt).Text) > 30 Or _
            Len(ShtClient.Range("C" & Cpt).Text) > 30 Then
            ShtClient.Rows(Cpt).Copy Destination:=ShtRejet.Rows(ShtRejet.Range("A65536").End(xlUp).Row + 1)
        Else
            ShtClient.Rows(Cpt).Copy Destination:=ShtOk.Rows(ShtOk.Range("A65536").End(xlUp).Row + 1)
        End If
    Next Cpt
    
    Set ShtClient = Nothing
    Set ShtOk = Nothing
    Set ShtRejet = Nothing
End Sub
++
Minick
 

koewin

XLDnaute Nouveau
Re : Contrôle et déplacement de lignes

Bonjour,

de retour de vacances, je relance mon problème.

J'ai rajouté la vérification d'une colonne pays dans mon fichier. si le code pays présent dans le feuille "fichier client" correspond à un des codes présents dans la feuille code pays, valider cette partie. Il faut conserver la partie de vérification de la longueur des champs noms et adresse (limité à 30 caractères).

j'aimerai également que, dans ma feuille "adresse rejetées", la partie qui fait que le client est rejeté soit directement coloriée en rouge (soit le nom ou l'adresse ou le code pays). j'ai essayé avec une mise en forme conditionnelle, mais quand je relance ma macro, cela m'enlève ma mise en forme.

Merci d'avance de votre aide.

koewin
 

Fichiers joints

koewin

XLDnaute Nouveau
Re : Contrôle et déplacement de lignes

Re,

ne me dites pas que personne n'arrive à m'aider ;). quand je vois le talent sur ce forum, je pense que mon problème n'est pas très dur.

En tout cas, merci d'avance à ceux qui me donneront un coup de main.

Cdt.

koewin
 

koewin

XLDnaute Nouveau
Re : Contrôle et déplacement de lignes

Le retour......

bonjour à tous,

est-il possible pour mon champ pays de mettre une adresse en rejetée si le code pays est vide (en plus du fait que peut être il ne correspond pas à la liste déjà définie).

Merci.

Koewin
 

Minick

XLDnaute Impliqué
Re : Contrôle et déplacement de lignes

Salut,

Change simplement ceci:
Code:
If ShtPays.Columns(1).Find(What:=ShtClient.Range("F" & Cpt).Value, LookIn:=xlValues, lookat:=xlWhole) Is Nothing Then
en
Code:
If ShtPays.Columns(1).Find(What:=ShtClient.Range("F" & Cpt).Value, LookIn:=xlValues, lookat:=xlWhole) Is Nothing Or ShtClient.Range("F" & Cpt).Value = "" Then
 

koewin

XLDnaute Nouveau
Re : Contrôle et déplacement de lignes

Merci Minick,

C'est parfait ça marche.

Enfin pour compléter, pour certains codes postaux, j'ai des conditions à respecter, à savoir :

Onglet code pays :

Type de caractères dans le code postal : N = Numérique / A= Alphabétique / B = Alphanumérique
Caractères obligatoires ou non :M = Obligatoire / K = Facultatif

exemple :

France -> F - NNNNN - MMMMM
Soit 5 chiffres obligatoires

Pays-Bas -> NNNNAA - MMMMKK
Soit 4 chiffres et 2 lettres ou les 4 premiers chiffres sont obligatoires, les deux lettres suivantes sont facultatives. Le CP "1231" est correct, de même que "1231AB".

Certains pays n'ont pas de règles donc tous bons.


Peut être moins facile ça, non ?

Cdt.

koewin
 

Fichiers joints

koewin

XLDnaute Nouveau
Re : Contrôle et déplacement de lignes

Bonjour,

merci de ton aide. Ca marche pour ce qui est au minimum a mettre dans le CP. Je m'explique :

Un CP français nécessite 5 chiffres, si tu n'en mets que 3, tu as un message d'erreur. Par contre, si tu en mets 6, pas de message d'erreur.

Dur à modifier ?

Merci de ton aide.

koewin
 

Discussions similaires


Haut Bas