Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Macro avec "Si"

  • Initiateur de la discussion Initiateur de la discussion Juju29
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

J

Juju29

Guest
Bonjour à tous,

Je travaille sur une macro et débute complètement dans ce domaine! Si quelqu'un peut m'aider, ce serait vraiment sympa!
Dans le fichier joint, j'aimerais prendre les données de la Feuil1 pour les placer dans la Feuil2 mais différemment. J'ai tenté une macro qui montre ce que je cherche à faire (avec un bug mais c'est pas grave). Là où je bloque c'est que Feuil1 peut être modifié, il me faudrait donc une formule qui dise "si dans feuil 1, l'outil voit un chiffre en colonne B (pour le 1er nom), selectionner la cellule en colonne A correspondante ainsi que celle en colonne B et la coller en Feuil2 de la manière qui est montrée (en ajoutant des lignes en Feuil2).

J'espère que c'est assez clair!

Merci beaucoup!!
 

Pièces jointes

Re : Macro avec "Si"

Bonjour Juju29,

Il y a plusieurs méthodes possibles. Voici une proposition simple. À adapter au besoin.

VB:
Sub Test()
    'déclaration des variables
    Dim ws1 As Worksheet        'Feuille de départ
    Dim ws2 As Worksheet        'feuille qui reçoit les données
    Dim rg1 As Range            'cellule de départ
    Dim rg2 As Range            'cellule qui reçoit les données
    Dim i As Long               'compteur
    Dim MaxLignes As Long       'nombre de lignes max
    
    
    Set ws1 = ThisWorkbook.Sheets("Feuil1")
    Set ws2 = ThisWorkbook.Sheets("Feuil2")
    Set rg1 = ws1.Range("B1")   'première cellule qui contient les données
    Set rg2 = ws2.Range("A1")
    
    '*** attention à l'instruction suivante, car efface tout ! ***
    ws2.UsedRange.ClearContents     'vide le contenu de la feuille 2
    ws2.UsedRange.ClearFormats
    
    MaxLignes = ws1.Cells(ws1.Rows.Count, "A").End(xlUp).Row  'dernière ligne dans la colonne A
    
    Do Until IsEmpty(rg1)   'boucle tant qu'il y a des données dans la ligne 1
        'on commence par écrire le nom trouvé
        rg2 = rg1
        Set rg2 = rg2.Offset(1, 0)  'décaler de 1 ligne
        For i = 2 To MaxLignes      'boucle sur toutes les lignes
            If Cells(i, rg1.Column) <> "" Then  's'il y a une valeur sous le nom alors
                ws1.Cells(i, "A").Copy rg2.Offset(0, 1)        'copier la valuer de la colonne A
                ws1.Cells(i, rg1.Column).Copy rg2.Offset(0, 2)  'copier la valeur sous le nom
                Set rg2 = rg2.Offset(1, 0)      'on passe à la prochaine ligne
            End If
        Next i
    
        Set rg1 = rg1.Offset(0, 1)  'décale de une colonne
    Loop

End Sub

A+
 
Re : Macro avec "Si"

Merci beaucoup Grand Chaman, j'ai tenté de l'adapter à mon fichier mais il est tellement complexe que je n'ai pas encore réussi. Il me faut une formation au code VBA je pense!
En tout cas, merci beaucoup pour ton aide!
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
667
Réponses
18
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…