Modifier la destination des lignes à rapatrier.

HoLbOrN13

XLDnaute Nouveau
Bonjour.

Je fait appel à vos lumière pour un problème qui ne doit pas être très compliqué mais je ne trouve pas la solution.

J'ai mis au point une macro me premetant lors de son execution de lancer une recherche dans une feuille de données pour qu'elle me rapatrie les lignes dons la valeurs dans la cellule A est égale à "Tulipe" ou une variante de Pirelli.

Jusque la tout va bien ca fonctionne.

1- Le probléme est qu la macro n'est utilisable que dans la feuille qui est appelée dans ma macro la feuille "Test MAcro" Or, j'aimerai pouvoir l'utiliser dans différentes feuille du classeur.

2- La macro place les lignes rapatrier dans la feuille de données à partir de la dernière ligne vide. Or, J'aimerais qu'il place les lignes en dessous de la ligne sélectionner lors du lancement de la macro.

Je ne sais pas si j'ai été trés claire dans mes explications, hésiter pas à me demander plus d'informations.

Voici le code concerné:


Code:
'Insertion Pirelli
If CheckBox8.Value = True Then
    For i = 1 To Sheets("Données").Range("A65356").End(xlUp).Row
        If Left(Sheets("Données").Range("A" & i).Value, Len ("Tulipe")) = "Tulipe" Then
            Sheets("Test MAcro").Range(Sheets("Test MAcro").Range("A65356").End(xlUp).Row + 1 & ":" & Sheets("Test MAcro").Range("A65356").End(xlUp).Row + 1).Value = Sheets("Données").Rows(i).Value
        End If
    Next i
End If
 

Fred0o

XLDnaute Barbatruc
Re : Modifier la destination des lignes à rapatrier.

Bonjour HoLbOrN13,

Il te faut donner le nom de la feuille de référence en début de macro. Pour cela, dans le code suivant, j'utilise la variable "Sha" comme ceci :
VB:
    'Insertion Pirelli
    Dim Sha
    Sha = ActiveSheet.Name
    ....
    ....
    ....
    ....
    If CheckBox8.Value = True Then
        For i = 1 To Sheets("Données").Range("A65356").End(xlUp).Row
            If Left(Sheets("Données").Range("A" & i).Value, Len("Tulipe")) = "Tulipe" Then
                Sheets(Sha).Range(Sheets(Sha).Range("A65356").End(xlUp).Row + 1 & ":" & Sheets(Sha).Range("A65356").End(xlUp).Row + 1).Value = Sheets("Données").Rows(i).Value
            End If
        Next i
    End If

NB : Personnellement, je préfèrerais Insertion Michelin...

Petit BIB.jpg

A+
 

Dranreb

XLDnaute Barbatruc
Re : Modifier la destination des lignes à rapatrier.

Bonjour.
Ou utiliser ActiveSheet dans le code.
Par ailleurs au lieu de lui faire chercher à chaque fois dans sa collection de feuilles celle qui porte le nom Excel "Données" (2 * le nombre de ligne à traiter) vous auriez intérêt à utiliser directement les CodeName des feuilles: ce sont des objets Worksheet directement connus du projet VBA.
Et d'une façon générale il vaut mieux noter des objets par des Set dans des variables du bon type d'objet utilisables directement en tant que tels, que de noter leur noms dans des String ou pire des Variant en vue de les reconstituer à chaque fois.
Cordialement.
 

HoLbOrN13

XLDnaute Nouveau
Re : Modifier la destination des lignes à rapatrier.

Je vous remercie de vos réponse ! Tout fonctionne parfaitement.

Le seul dernier petit probléme est au niveau du rapatriement des données.
Actuellement la macro les rapatrie après la dernière ligne non vide.

J'aimerai que la macro rapatrie les données sous la ligne sélectionner lors de la macro.

Exemple :

J'ai une ligne d'en-tête du véhicule.

Je la sélectionne, lance le userform pour définir les données à rapatrier selon la composition du dit véhicule.
Une fois valider la macro doit rapatrier les données rechercher sous la ligne sélectionner.
 

Dranreb

XLDnaute Barbatruc
Re : Modifier la destination des lignes à rapatrier.

Bonsoir
Remplacez Range("A65356").End(xlUp).Row
par Selection.Row
En 24 heures vous n'avez pas réussi à trouver ça tout seul ?
P.S. Ou plutôt notez Selection.Row dans une variable que vous incrémenterez à chaque passage dans la boucle.
 
Dernière édition:

HoLbOrN13

XLDnaute Nouveau
Re : Modifier la destination des lignes à rapatrier.

Concrètement ça donne quoi ?
J'ai fait le remplacement, mais ça me met une erreur.
Si tu pourrait me donner le code complet ça serait sympa.

Oui, je suis un débutant qui s'assume, j’apprends à partir de chose déjà faite pour m'en inspirait mais c'est pas toujours évident.

Je sais je doit désespérer les pros comme toi ! Désoler.

Puis en ce moment j'ai la tête vraiment ailleurs !

Encore une fois désoler. Vraiment.
 

Dranreb

XLDnaute Barbatruc
Re : Modifier la destination des lignes à rapatrier.

C'est à vous de joindre ce que vous avez fait. Depuis le début d'ailleurs. Mais pourquoi diable est ce que j'insiste à examiner encores des demandes dépourvues de pièces jointes ?
 

HoLbOrN13

XLDnaute Nouveau
Re : Modifier la destination des lignes à rapatrier.

Ok merci. Je demander juste ou remplacer pour insérer sous la ligne active.
Dans ma macro je répète cette ligne pour insérer different élément selon les Checkbox cochees .
Je veut juste que ça commence sous la ligne active et les checkbox suivante à insert à la suite.

Mais merci pour te tout. Je sais que c pas évident, je suis un débutant qui ne demande qu'à apprendre.
 

Dranreb

XLDnaute Barbatruc
Re : Modifier la destination des lignes à rapatrier.

Alors, si vous voulez apprendre, joignez le classeur, que je vous dise ce qui ne va pas dans ce que vous avez écrit.
Je ne vais surement pas en plus ouvrir de mon coté un nouveau classeur pour y taper le bon code que je ne pourrai pas tester vu qu'il sera vierge.
 

HoLbOrN13

XLDnaute Nouveau
Re : Modifier la destination des lignes à rapatrier.

Voila la pièce jointe encore une fois désoler.

Je suis sur que la solution est relativement simple mais je ne maitrise pas encore assez le VB.

Je te remercie de ton aide.

Hésite pas à me poser des questions si tu ne comprend pas mon fichier.

merci.
 

Pièces jointes

  • Exemple.XLS
    114.5 KB · Affichages: 41
  • Exemple.XLS
    114.5 KB · Affichages: 45
  • Exemple.XLS
    114.5 KB · Affichages: 42

Dranreb

XLDnaute Barbatruc
Re : Modifier la destination des lignes à rapatrier.

Bonjour.
Votre procédure pourrait s'écrire comme ça par exemple:
VB:
Private Sub CommandButton1_Click()
Dim NCbx As Long, NMax As Long, TDéb(1 To 8) As String, Ls As Long, _
   PlgNat As Range, VNat As String, N As Long
For NCbx = 1 To 8
   If Me.Controls("CheckBox" & NCbx).Value Then
      NMax = NMax + 1
      TDéb(NMax) = Array("Véhicule 5Cv", "Véhicule 6Cv", "BMW", "FIAT", _
         "VOLVO", "MICHELIN", "Continental", "Pirelli")(NCbx - 1) & "*"
      End If
   Next NCbx
Application.ScreenUpdating = False
Ls = Selection.Row ' Initialement demandée
Ls = 7 ' Ligne d'entête toujours souhaitée ?
Set PlgNat = Feuil2.[A5]
Do:
   VNat = PlgNat.Value
   For N = 1 To NMax
      If VNat Like TDéb(N) Then
         PlgNat.EntireRow.Copy
         Ls = Ls + 1
         Feuil17.Rows(Ls).Insert
         Exit For
         End If
      Next N
   Set PlgNat = PlgNat.Offset(1)
   Loop Until IsEmpty(PlgNat)
Unload Me
End Sub
Utilisez la touche F1 sur les éléments de language que vous ne connaissez pas.
À +
 
Dernière édition:

HoLbOrN13

XLDnaute Nouveau
Re : Modifier la destination des lignes à rapatrier.

Votre code fonctionne parfaitement. Même si je l'avoue, il est fort compliquer à comprendre pour moi. (Oui je suis nul !)

J'aimerai en faite individualiser les Checkbox.

Je m’explique :

En faite j'aimerai par exemple que quand la checkbox1 est cochée, cella lance une recherche dans la feuille de données comme actuellement mais cette fois ci avec plusieurs variables.

Si la valeur en cellule A contient : "XX-08" ou "XX-09" ou "XX-10" ou "Etc..." .selection de la ligne.insert à partir de la cellule active dans la feuille de lancement de la macro.

Je voudrais individualiser les checkbox afin de mettre pour chaque checkbox des recherche de variables différentes .

Les données doivent être rapatriées pour la première insertion sous la cellule active et à la suite pour les checkbox suivantes.

Si je pourrait avoir une ligne de code que je pourrait adapter à chaque checkbox cela me serait très utile.
 
Dernière édition:

Discussions similaires

Réponses
4
Affichages
234

Statistiques des forums

Discussions
312 492
Messages
2 088 899
Membres
103 982
dernier inscrit
krakencolas